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.
Montage d’API publiques
Les API publiques de montage sont désormais disponibles. Ces API vous permettent d’intégrer et d’accéder en toute transparence à diverses sources de données publiques au sein de vos pipelines de données.
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 1 : CreateDataPipeline :
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>"
}
Exemple 2 : Créer MountedDataFactory
POST https://api.fabric.microsoft.com/v1/workspaces/<your WS Id>/items
Corps :
Charge utile :
{"DataFactoryResourceId":"/subscriptions/<ADF subscription Id>/resourceGroups/<ADF resource group name>/providers/Microsoft.DataFactory/factories/<ADF datafactory name>"}
JSON encodé :
{
"displayName": "pipeline_mdf",
"type": " MountedDataFactory ",
"definition": {
"parts": [
{
"path": "mountedDataFactory-content.json",
"payload": <base64 encoded value>,
"payloadType": "InlineBase64"
}
]
}
}
Réponse 201 :
{
"id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "MountedDataFactory",
"displayName": "Pipeline_mdf",
"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>
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": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"activityName": "Wait1",
"activityType": "Wait",
"activityRunId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/RESOURCEGROUPS/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/PROVIDERS/MICROSOFT.TRIDENT/WORKSPACES/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/pipelineruns/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/activityruns/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a"
}
]
Limitations connues
- L’authentification du principal de service (SPN) n’est actuellement pas prise en charge.