Compartilhar via


API REST pública do pipeline de dados do Microsoft Fabric (Preview)

Importante

A API do Microsoft Fabric para Data Factory está em visualização pública. Estas informações estão relacionadas a um produto de pré-lançamento, que pode ser bastante modificado antes de ser lançado. A Microsoft não faz nenhuma garantia, expressa ou implícita, com relação às informações fornecidas aqui.

No Microsoft Fabric, as APIs do Data Factory consistem apenas em operações CRUD para pipelines e fluxos de dados. No momento, apenas pipelines de inferência em lote são aceitos. As APIs de fluxos de dados serão lançadas mais tarde. Outras áreas comuns para projetos de integração de dados estão em APIs separadas: agendas, monitoramento, conexões, têm suas próprias APIs no Fabric. A documentação de referência online principal para APIs REST do Microsoft Fabric pode ser encontrada em Referências da API REST do Microsoft Fabric. Consulte também a API de itens fundamentais e o Job Scheduler.

Montagem de APIs públicas

As APIs públicas de montagem já estão disponíveis. Essas APIs permitem integrar e acessar diretamente várias fontes de dados públicas nos pipelines de dados.

Obter um token de autorização

Opção 1: Usando a MSAL.Net

Guia de início rápido da API do Fabric – APIs REST do Microsoft Fabric

Use a MSAL.Net para adquirir um token de Microsoft Entra ID para o serviço Fabric com os seguintes escopos: Workspace.ReadWrite.All, Item.ReadWrite.All. Para obter mais informações sobre aquisição de tokens com a MSAL.Net, consulte Aquisição de token – Biblioteca de Autenticação da Microsoft para .NET.

Cole o ID do aplicativo (cliente) que você copiou anteriormente e cole-o para a variável ClientId.

Opção 2: Usando o Portal do Azure

Entre no Portal do Fabric do locatário que deseja testar e pressione F12 para entrar no modo de desenvolvedor do navegador. No console que é aberto, execute:

powerBIAccessToken

Copie o token e cole-o para a variável ClientId.

Definição de item com payload codificada em base64

  • Use Codificar e decodificar em Base64 para codificar seu JSON.
  • Verifique se a caixa Executar codificação segura de URL não está marcada.
  • Você pode obter as definições de pipeline na guia Exibir -->Exibir código JSON na interface do usuário do 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" 
    } 
}

Pegue o objeto de propriedades e envolva-o com chaves – { } – para que o payload da definição do item REST seja:

{
    "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" 
    } 
} 

Criar item

API REST - Itens - Criar item

Exemplo 1 – CreateDataPipeline:

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

Corpo:

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

Observação

A documentação afirma que há apenas 2 propriedades necessárias: displayName e type. No momento, o Workload-DI também não oferece suporte à criação sem uma definição. A correção para esse requisito errôneo está em processo de implantação. Por enquanto, você pode enviar a mesma definição padrão usada pela interface do usuário do Fabric: ‘{"properties":{"activities":[]}}’

JSON modificado incluindo definição:

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

Resposta 201:

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

Exemplo 2 – Criar MountedDataFactory

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

Corpo:

Conteúdo:

{"DataFactoryResourceId":"/subscriptions/<ADF subscription Id>/resourceGroups/<ADF resource group name>/providers/Microsoft.DataFactory/factories/<ADF datafactory name>"} 

JSON codificado:

{ 
  "displayName": "pipeline_mdf", 
  "type": " MountedDataFactory ", 
  "definition": { 
    "parts": [ 
      { 
        "path": "mountedDataFactory-content.json", 
        "payload": <base64 encoded value>, 
        "payloadType": "InlineBase64" 
      } 
    ] 
  } 
}  

Resposta 201:

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

Excluir item

API REST - Itens - Excluir item

Exemplo:

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

Resposta 200: (Sem corpo)

Obter item

API REST - Itens - Obter item

Exemplo:

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

Resposta 200:

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

Obtém a definição do item

API REST - Itens - Obter definição de item

Exemplo:

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

Resposta 200:

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

Listar itens de

API REST - Itens - Itens da lista

Exemplo:

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

Resposta 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" 
        } 
    ] 
} 

Atualizar item

API REST - Itens - Atualizar item

Exemplo:

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

Corpo:

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

Resposta 200:

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

Atualizar definição do item

API REST - Itens - Atualizar definição do item

Exemplo:

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

Corpo:

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

Resposta 200: (Sem corpo)

Executar trabalho de item sob demanda

API REST - Itens - Executar trabalho de item sob demanda

Exemplo:

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

Resposta 202: (Sem corpo)

Exemplo com dois valores de parâmetro:

Aqui temos uma atividade Wait com um parâmetro chamado param_waitsec para especificar o número de segundos que devemos esperar.

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

Corpo:

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

Resposta 202: (Sem corpo)

Observação

Não há corpo devolvido no momento, mas o ID do trabalho deve ser devolvido. Durante a visualização, ele pode ser encontrado nos cabeçalhos retornados, na propriedade "Location".

Obter instância de trabalho do item

API REST - Itens - Obter instância de trabalho do item

Exemplo:

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

Resposta 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" 
} 

Cancelar instância de trabalho do item

API REST - Itens - Cancelar instância de trabalho do item

Exemplo:

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

Resposta 202: (Sem corpo)

Observação

Depois de cancelar um trabalho, você pode verificar o status chamando a instância Obter instância de trabalho do item ou abrindo Exibir histórico de execução na interface do usuário do Fabric.

A atividade de consulta é executada

Exemplo:

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

Corpo:

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

Observação

"job id" é a mesma id criada e usada nas APIs públicas do Job Scheduler

Resposta 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"
    }
]

Limitações conhecidas

  • Atualmente, não há suporte para SPN (Autenticação de Entidade de Serviço).