Partager via


API REST publique pour le pipeline de données Microsoft Fabric (aperçu)

Important

L'API Microsoft Fabric pour Data Factory est actuellement en avant-première publique. Certaines informations portent sur un produit en préversion susceptible d’être substantiellement modifié avant sa publication. Microsoft ne donne aucune garantie, expresse ou implicite, concernant les informations fournies ici.

Dans Data Factory pour Microsoft Fabric, les API consistent uniquement en des opérations CRUD pour les pipelines et les flux de données. Actuellement, seuls les pipelines de données sont pris en charge. Les API de flux de données seront publiées ultérieurement. D’autres domaines communs aux projets d’intégration de données se trouvent dans des API distinctes : les planifications, la surveillance et les connexions ont leurs propres API dans Fabric. La principale documentation de référence en ligne pour les API REST de Microsoft Fabric se trouve dans Références API REST Microsoft Fabric. Reportez-vous également à l’API des éléments de base et au planificateur de tâches.

Obtenir un jeton d’autorisation

Option 1 : Utilisation de MSAL.Net

Démarrage rapide avec l’API Fabric – API REST Microsoft Fabric

Utilisez MSAL.Net pour acquérir un jeton Microsoft Entra ID pour le service Fabric avec les portées suivantes : Workspace.ReadWrite.All, Item.ReadWrite.All. Pour plus d’informations sur l’acquisition de jetons avec MSAL.Net, consultez Acquisition de jetons – Bibliothèque d’authentification Microsoft pour .NET.

Collez l’ID de l’application (client) que vous avez copié précédemment et collez-le dans la variable ClientId.

Option 2 : Utilisation du portail Fabric

Connectez-vous au portail Fabric pour le client que vous voulez tester et appuyez sur F12 pour accéder au mode développeur du navigateur. Dans la console, exécutez :

powerBIAccessToken

Copiez le jeton et collez-le dans la variable ClientId.

Définition d’élément avec charge utile encodée en base64

  • Utilisez Encodage et décodage en Base64 pour encoder votre JSON.
  • Assurez-vous que la case Effectuer un encodage URL sécurisé n’est pas cochée.
  • Vous pouvez obtenir les définitions de pipeline via l’onglet Afficher -->Afficher le code JSON dans l’interface utilisateur Fabric.
{ 
    "name": "Pipeline_1_updated", 
    "objectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
    "properties": { 
        "description": "this is the description", 
        "activities": [ 
            { 
                "name": "Wait1", 
                "type": "Wait", 
                "dependsOn": [], 
                "typeProperties": { 
                    "waitTimeInSeconds": 240 
                } 
            } 
        ], 
        "annotations": [], 
        "lastModifiedByObjectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
        "lastPublishTime": "2024-02-01T17:28:02Z" 
    } 
}

Entourez les propriétés de l’objet d’accolades – { } – de sorte que la charge utile de la définition de l’élément REST soit la suivante :

{
    "properties": { 
        "description": "this is the description", 
        "activities": [ 
            { 
                "name": "Wait1", 
                "type": "Wait", 
                "dependsOn": [], 
                "typeProperties": { 
                    "waitTimeInSeconds": 240 
                } 
            } 
        ], 
        "annotations": [], 
        "lastModifiedByObjectId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
        "lastPublishTime": "2024-02-01T17:28:02Z" 
    } 
} 

Créer un élément

API REST – Éléments – Créer un élément

Exemple :

POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items

Corps :

{ 
  "displayName": "pipeline_1", 
  "type": "DataPipeline" 
} 

Remarque

La documentation indique qu’il n’y a que deux propriétés requises : displayName et type. Actuellement, Workload-DI ne prend pas en charge la création sans définition. Le correctif pour cette exigence erronée est en cours de déploiement. Pour l’instant, vous pouvez envoyer la même définition par défaut que celle utilisée par l’interface utilisateur Fabric : ‘{"properties":{"activities":[]}}’

JSON modifié incluant la définition :

{ 
  "displayName": "pipeline_1", 
  "type": "DataPipeline", 
  "definition": { 
    "parts": [ 
      { 
        "path": "pipeline-content.json", 
        "payload": "eyJwcm9wZXJ0aWVzIjp7ImFjdGl2aXRpZXMiOltdfX0=", 
        "payloadType": "InlineBase64" 
      } 
    ] 
  } 
} 

Réponse 201 :

{ 
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
    "type": "DataPipeline", 
    "displayName": "Pipeline_1", 
    "description": "", 
    "workspaceId": "<Your WS Id>" 
} 

Supprimer l’élément

API REST – Éléments – Supprimer l’élément

Exemple :

DELETE https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>

Réponse 200 : (Aucun corps)

Obtenir un élément

API REST – Éléments – Obtenir un élément

Exemple :

GET https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>

Réponse 200 :

{ 
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
    "type": "DataPipeline", 
    "displayName": "Pipeline_1", 
    "workspaceId": "<your WS Id>" 
} 

Obtenir la définition d’un élément

API REST – Éléments – Obtenir la définition d’un élément

Exemple :

POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>/getDefinition

Réponse 200 :

{ 
    "definition": { 
        "parts":[ 
            { 
                "path": "pipeline-content.json", 
                "payload": "ewogICJwcm9wZXJ0aWVzIjogewogICAgImFjdGl2aXRpZXMiOiBbXQogIH0KfQ==", 
                "payloadType": "InlineBase64" 
            } 
        ] 
    } 
} 

Répertorier les éléments

API REST – Éléments – Éléments de liste

Exemple :

GET https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items

Réponse 200 :

{ 
    "value": [ 
        { 
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
            "type": "SemanticModel", 
            "displayName": "deata_lh", 
            "description": "", 
            "workspaceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 
        }, 
        { 
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
            "type": "SQLEndpoint", 
            "displayName": "deata_lh", 
            "description": "", 
            "workspaceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 
        }, 
        { 
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
            "type": "Lakehouse", 
            "displayName": "deata_lh", 
            "description": "", 
            "workspaceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 
        }, 
        { 
            "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", 
            "type": "DataPipeline", 
            "displayName": "Pipeline_1", 
            "description": "", 
            "workspaceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 
        } 
    ] 
} 

Update item (Mettre à jour un élément)

API REST – Éléments – Mettre à jour l’élément

Exemple :

PATCH https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>

Corps :

{ 
  "displayName": "Pipeline_1_updated", 
  "description": "This is the description." 
}

Réponse 200 :

{ 
    "id": "<pipeline id>", 
    "type": "DataPipeline", 
    "displayName": "Pipeline_1_updated", 
    "description": "This is the description.", 
    "workspaceId": "<Your WS id>" 
}

Mettre à jour la définition d’élément

API REST – Éléments – Mettre à jour la définition d’élément

Exemple :

POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>/updateDefinition

Corps :

{ 
  "definition": { 
    "parts": [ 
      { 
        "path": "pipeline-content.json", 
        "payload": "eyJwcm9wZXJ0aWVzIjp7ImFjdGl2aXRpZXMiOltdfX0=", 
        "payloadType": "InlineBase64" 
      } 
    ] 
  } 
}

Réponse 200 : (Aucun corps)

Exécuter la tâche d’élément à la demande

API REST – Éléments – Exécuter la tâche d’élément à la demande

Exemple :

POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>/jobs/instances?jobType=Pipeline

Réponse 202 : (Aucun corps)

Exemple avec deux valeurs de paramètres :

Nous avons ici une activité Wait avec un paramètre nommé param_waitsec pour spécifier le nombre de secondes à attendre.

POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>/jobs/instances?jobType=Pipeline

Corps :

{ 
  "executionData": { 
    "parameters": {
      "param_waitsec": "10" 
    } 
  } 
}

Réponse 202 : (Aucun corps)

Remarque

Aucun corps n’est renvoyé pour l’instant, mais l’identifiant de la tâche devrait être renvoyé. Pendant l’aperçu, il peut être trouvé dans les en-têtes renvoyés, dans la propriété « Location ».

Obtenir l’instance de la tâche d’élément

API REST – Éléments – Obtenir l’instance de la tâche d’élément

Exemple :

GET https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>/jobs/instances/<job ID>dotnetcli

Réponse 200 :

{ 
    "id": "4511ffcd-a9f6-4f75-91a9-9ceab08d7539", 
    "itemId": "2bb9fe4a-0a84-4725-a01f-7ac4e6850259", 
    "jobType": "Pipeline", 
    "invokeType": "Manual", 
    "status": "Completed", 
    "failureReason": null, 
    "rootActivityId": "f14bdd95-2cff-4451-b839-bea81509126d", 
    "startTimeUtc": "2024-02-01T03:03:19.8361605", 
    "endTimeUtc": "2024-02-01T03:05:00.3433333" 
} 

Annuler l’instance de tâche d’élément

API REST – Éléments – Annuler l’instance de la tâche d’élément

Exemple :

POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items/<pipeline id>/jobs/instances/<job ID>/cancel

Réponse 202 : (Aucun corps)

Remarque

Après avoir annulé une tâche, vous pouvez en vérifier l’état soit en appelant Get item job instance, soit en consultant Afficher l’historique des exécutions dans l’interface utilisateur Fabric.

Interroger les exécutions d'activité

Exemple : POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/datapipelines/pipelineruns/<job id>/queryactivityruns

Corps :

{
  "filters":[],
  "orderBy":[{"orderBy":"ActivityRunStart","order":"DESC"}],
  "lastUpdatedAfter":"2024-05-22T14:02:04.1423888Z",
  "lastUpdatedBefore":"2024-05-24T13:21:27.738Z"
}

Remarque

"job id" est le même identifiant créé et utilisé dans les API publiques du calendrier des tâches

Réponse 200 :

[
    {
        "pipelineName": "ca91f97e-5bdd-4fe1-b39a-1f134f26a701",
        "pipelineRunId": "f2fa7a0e-586d-4d73-a2b4-7ddc785243ae",
        "activityName": "Wait1",
        "activityType": "Wait",
        "activityRunId": "ef579d3d-d23e-477a-8150-d6e15d66a532",
        "linkedServiceName": "",
        "status": "Succeeded",
        "activityRunStart": "2024-05-23T13:43:03.6397566Z",
        "activityRunEnd": "2024-05-23T13:43:31.3906179Z",
        "durationInMs": 27750,
        "input": {
            "waitTimeInSeconds": 27
        },
        "output": {},
        "error": {
            "errorCode": "",
            "message": "",
            "failureType": "",
            "target": "Wait1",
            "details": ""
        },
        "retryAttempt": null,
        "iterationHash": "",
        "userProperties": {},
        "recoveryStatus": "None",
        "integrationRuntimeNames": null,
        "executionDetails": null,
        "id": "/SUBSCRIPTIONS/4DA86268-68B8-4B08-AD58-A7AEE54138CD/RESOURCEGROUPS/4DA86268-68B8-4B08-AD58-A7AEE54138CD/PROVIDERS/MICROSOFT.TRIDENT/WORKSPACES/4DA86268-68B8-4B08-AD58-A7AEE54138CD/pipelineruns/f2fa7a0e-586d-4d73-a2b4-7ddc785243ae/activityruns/ef579d3d-d23e-477a-8150-d6e15d66a532"
    }
]

Limitations connues

  • L’authentification du principal de service (SPN) n’est actuellement pas prise en charge