Partilhar via


Referência da API HTTP

A extensão Durable Functions expõe um conjunto de APIs HTTP incorporadas que podem executar tarefas de gestão em orquestrações, entities e tarefas. Estas APIs HTTP são webhooks de extensibilidade que o host do Azure Functions autoriza, mas a extensão Durable Functions trata diretamente.

Antes de usar estas APIs HTTP, certifique-se de que tem:

URL base e parâmetros comuns

Todas as APIs HTTP partilham a mesma URL base que a tua aplicação funcional. Quando desenvolves localmente usando as Ferramentas Centrais Azure Functions, a URL base é tipicamente http://localhost:7071. No serviço Azure Functions hospedado, a URL base é tipicamente https://{appName}.azurewebsites.net. A extensão também suporta nomes de host personalizados se configurados na sua aplicação de Serviços de Aplicações.

Todas as APIs HTTP implementadas pela extensão requerem os seguintes parâmetros. O tipo de dados de todos os parâmetros é string.

Parâmetro Tipo de parâmetro Description
taskHub String de consulta O nome do centro de tarefas. Se não for especificado, assume-se o nome do hub de tarefas da aplicação de função atual.
connection String de consulta O nome da definição da aplicação de ligação para o fornecedor de armazenamento backend. Se não for especificado, assume-se a configuração de ligação padrão para a aplicação funcional.
systemKey String de consulta A chave de autorização necessária para invocar a API.

Como obter valores de parâmetros

Uso de ligações de cliente de orquestração (recomendado): Gerar URLs completas automaticamente usando APIs de ligação de clientes de orquestração :

  • .NET: CreateCheckStatusResponse(), CreateHttpManagementPayload()
  • JavaScript: createCheckStatusResponse(), createHttpManagementPayload()

Construção manual de URLs:

  • taskHub: Retirado do host.json ficheiro:

    • v2.x: extensions.durableTask.hubName
    • v1.x: durableTask.hubName
    • Também pode ser configurado através das definições da aplicação usando %AppSettingName% a sintaxe
  • connection: Nome da definição da aplicação que contém a ligação de armazenamento. Retirado de host.json:

    • v2.x: extensions.durableTask.storageProvider.connectionStringName (por defeito se AzureWebJobsStorage não for especificado)
    • v1.x: durableTask.azureStorageConnectionStringName (por defeito se AzureWebJobsStorage não especificado)
    • Pode usar cadeias de ligação ou ligações baseadas em identidade (autenticação Microsoft Entra)
  • systemKey: Chave de autorização específica de extensão para APIs de Tarefas Duradouras. Retirado do portal Azure:

    1. Abra a sua Aplicação de Funções
    2. Selecione as teclas FunçõesAplicação no menu esquerdo
    3. Na secção de chaves do Sistema , localize a chave (normalmente gerada automaticamente para a extensão)
    4. Copiar o valor-chave

    Nota de segurança: A chave do sistema concede acesso a todas as APIs HTTP Durable Functions. Não partilhes publicamente nem o incluas no código do lado do cliente.

Cada API HTTP suporta um conjunto consistente de padrões de pedido/resposta. As secções seguintes fornecem informações para cada operação.

Fluxo de trabalho comum de API

Um ciclo típico de vida de orquestração segue esta sequência:

  1. Iniciar orquestraçãoPOST /runtime/webhooks/durabletask/orchestrators/{functionName} → Devolve o ID da instância e o URL de estado
  2. Verificar o estadoGET /runtime/webhooks/durabletask/instances/{instanceId} → Monitorizar o progresso
  3. Enviar evento (opcional)POST /runtime/webhooks/durabletask/instances/{instanceId}/raiseEvent/{eventName} → Enviar sinais externos
  4. Limpeza (opcional)DELETE /runtime/webhooks/durabletask/instances/{instanceId} → Histórico de Purga

Para detalhes das operações e exemplos de pedido/resposta, consulte a referência abaixo.

Iniciar orquestração

Começa a executar uma nova instância da função de orquestrador especificada.

Solicitação

Importante

O formato URL difere consoante a versão de execução das funções. Selecione o formato que se adequa ao seu ambiente.

Runtime de funções 2.x (recomendado):

POST /runtime/webhooks/durabletask/orchestrators/{functionName}/{instanceId?}
     ?taskHub={taskHub}
     &connection={connectionName}
     &code={systemKey}

Runtime de funções 1.x (legado):

POST /admin/extensions/DurableTaskExtension/orchestrators/{functionName}/{instanceId?}
     ?taskHub={taskHub}
     &connection={connectionName}
     &code={systemKey}

Os parâmetros de pedido para esta API incluem o conjunto padrão mencionado anteriormente e os seguintes parâmetros únicos:

Campo Tipo de parâmetro Description
functionName URL O nome da função orquestradora a iniciar.
instanceId URL Parâmetro opcional. O ID da instância de orquestração. Se não for especificado, a função orquestrador começa com um ID de instância aleatório.
{content} Solicitar conteúdo Opcional. A entrada da função do orquestrador formatada em JSON.

Resposta

Vários valores possíveis de código de estado podem ser devolvidos.

  • HTTP 202 (Aceite): A função do orquestrador especificada estava programada para começar a executar. O Location cabeçalho de resposta contém uma URL para consultar o estado da orquestração.
  • HTTP 400 (Pedido mau): A função do orquestrador especificada não existe, o ID da instância especificado não é válido, ou o conteúdo do pedido não é JSON válido.

Segue-se um pedido de exemplo que inicia uma RestartVMs função de orquestrador e inclui uma carga útil de objeto JSON:

POST /runtime/webhooks/durabletask/orchestrators/RestartVMs?code=XXX
Content-Type: application/json
Content-Length: 83

{
    "resourceGroup": "myRG",
    "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
}

A carga útil de resposta para os casos HTTP 202 é um objeto JSON com os seguintes campos:

Campo Description
id O ID da instância de orquestração.
statusQueryGetUri O URL de estado da instância de orquestração.
sendEventPostUri O URL "raise event" da instância de orquestração.
terminatePostUri A URL de "terminar" da instância de orquestração.
purgeHistoryDeleteUri O URL "purge history" da instância de orquestração.
rewindPostUri Pré-visualização: O URL de «rebobinar» da instância de orquestração.
suspendPostUri A URL "suspender" da instância de orquestração.
resumePostUri A URL de "resume" da instância de orquestração.

O tipo de dados de todos os campos é string.

Aqui está um exemplo de payload de resposta para uma instância de orquestração com abc123 como ID (formatado para legibilidade):

{
    "id": "abc123",
    "purgeHistoryDeleteUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123?code=XXX",
    "sendEventPostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123/raiseEvent/{eventName}?code=XXX",
    "statusQueryGetUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123?code=XXX",
    "terminatePostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123/terminate?reason={text}&code=XXX",
    "suspendPostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123/suspend?reason={text}&code=XXX",
    "resumePostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123/resume?reason={text}&code=XXX"
}

A resposta HTTP destina-se a ser compatível com o Padrão de Consumidor de Polling. Inclui também os seguintes cabeçalhos de resposta notáveis:

  • Localização: A URL do endpoint de estado, que contém o mesmo valor do statusQueryGetUri campo.
  • Retry-After: O número de segundos a esperar entre as operações de sondagem. O valor predefinido é 10.

Para mais informações sobre o padrão de sondagem HTTP assíncrona, consulte a documentação de rastreamento de operações assíncronas HTTP .

Obtenha o estado da instância

Obtém o estado de uma instância de orquestração especificada. Use isto para monitorizar o progresso da orquestração e obter resultados.

Solicitação

Runtime de funções 2.x (recomendado):

GET /runtime/webhooks/durabletask/instances/{instanceId}
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
    &showHistory=[true|false]
    &showHistoryOutput=[true|false]
    &showInput=[true|false]
    &returnInternalServerErrorOnFailure=[true|false]

Runtime de funções 1.x (legado):

GET /admin/extensions/DurableTaskExtension/instances/{instanceId}
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
    &showHistory=[true|false]
    &showHistoryOutput=[true|false]
    &showInput=[true|false]
    &returnInternalServerErrorOnFailure=[true|false]

Os parâmetros de pedido para esta API incluem o conjunto padrão mencionado anteriormente e os seguintes parâmetros únicos:

Campo Tipo de parâmetro Description
instanceId URL O ID da instância de orquestração.
showInput String de consulta Parâmetro opcional. Se definido para false, a entrada da função não está incluída na carga útil de resposta.
showHistory String de consulta Parâmetro opcional. Se definido para true, o histórico de execução da orquestração é incluído na carga útil de resposta.
showHistoryOutput String de consulta Parâmetro opcional. Se definido para true, as saídas da função são incluídas no histórico de execução da orquestração.
createdTimeFrom String de consulta Parâmetro opcional. Quando especificado, filtra a lista de instâncias retornadas que foram criadas no carimbo de data e hora ISO8601 especificado ou posterior.
createdTimeTo String de consulta Parâmetro opcional. Quando especificado, filtra a lista de instâncias devolvidas que foram criadas no mesmo, ou antes, do carimbo temporal ISO8601 dado.
runtimeStatus String de consulta Parâmetro opcional. Quando especificado, filtra a lista de instâncias devolvidas com base no seu estado de execução. Para ver a lista de possíveis valores de estado em tempo de execução, consulte o artigo Querying instances .
returnInternalServerErrorOnFailure String de consulta Parâmetro opcional. Se definida para true, esta API devolve uma resposta HTTP 500 em vez de 200 se a instância estiver em estado de falha. Este parâmetro destina-se a cenários automáticos de sondagem de estado.

Resposta

Vários valores possíveis de código de estado podem ser devolvidos.

  • HTTP 200 (OK): A instância especificada encontra-se num estado concluído ou falhado.
  • HTTP 202 (Aceite): A instância especificada está em curso.
  • HTTP 400 (Pedido Mau): A instância especificada falhou ou foi terminada.
  • HTTP 404 (Não Encontrado): A instância especificada não existe ou ainda não começou a correr.
  • HTTP 500 (Erro do Servidor Interno): Retornado apenas quando o returnInternalServerErrorOnFailure é definido como true e a instância especificada falhou com uma exceção não tratada.

A carga útil de resposta para os casos HTTP 200 e HTTP 202 é um objeto JSON com os seguintes campos:

Campo Tipo de dados Description
runtimeStatus cadeia (de caracteres) O estado de runtime da instância. Os valores incluem Em Curso, Pendente, Falhado, Cancelado, Terminado, Concluído, Suspenso.
input JSON Os dados JSON usados para inicializar a instância. Este campo é null se o showInput parâmetro da cadeia de consulta estiver definido como false.
customStatus JSON Os dados JSON utilizados para indicar o estado personalizado de orquestração. Este campo é null , se não estiver definido.
output JSON A saída JSON da instância. Este campo é null se a instância não estiver em estado concluído.
createdTime cadeia (de caracteres) O momento em que a instância foi criada. Utiliza notação estendida ISO 8601.
lastUpdatedTime cadeia (de caracteres) O tempo em que a última instância persistiu. Utiliza notação estendida ISO 8601.
historyEvents JSON Um array JSON que contém o histórico de execução da orquestração. Este campo é null a menos que o showHistory parâmetro da cadeia de consulta esteja definido para true.

Aqui está um exemplo de carga útil de resposta, incluindo o histórico de execução da orquestração e os resultados das atividades (formatados para legibilidade):

{
  "createdTime": "2018-02-28T05:18:49Z",
  "historyEvents": [
      {
          "EventType": "ExecutionStarted",
          "FunctionName": "E1_HelloSequence",
          "Timestamp": "2018-02-28T05:18:49.3452372Z"
      },
      {
          "EventType": "TaskCompleted",
          "FunctionName": "E1_SayHello",
          "Result": "Hello Tokyo!",
          "ScheduledTime": "2018-02-28T05:18:51.3939873Z",
          "Timestamp": "2018-02-28T05:18:52.2895622Z"
      },
      {
          "EventType": "TaskCompleted",
          "FunctionName": "E1_SayHello",
          "Result": "Hello Seattle!",
          "ScheduledTime": "2018-02-28T05:18:52.8755705Z",
          "Timestamp": "2018-02-28T05:18:53.1765771Z"
      },
      {
          "EventType": "TaskCompleted",
          "FunctionName": "E1_SayHello",
          "Result": "Hello London!",
          "ScheduledTime": "2018-02-28T05:18:53.5170791Z",
          "Timestamp": "2018-02-28T05:18:53.891081Z"
      },
      {
          "EventType": "ExecutionCompleted",
          "OrchestrationStatus": "Completed",
          "Result": [
              "Hello Tokyo!",
              "Hello Seattle!",
              "Hello London!"
          ],
          "Timestamp": "2018-02-28T05:18:54.3660895Z"
      }
  ],
  "input": null,
  "customStatus": { "nextActions": ["A", "B", "C"], "foo": 2 },
  "lastUpdatedTime": "2018-02-28T05:18:54Z",
  "output": [
      "Hello Tokyo!",
      "Hello Seattle!",
      "Hello London!"
  ],
  "runtimeStatus": "Completed"
}

A resposta HTTP 202 inclui também um cabeçalho de resposta Localização que faz referência ao mesmo URL do statusQueryGetUri campo mencionado anteriormente.

Obter o status de todas as instâncias

Consulta o estado de múltiplas instâncias de orquestração ao mesmo tempo. Pode filtrar os resultados por estado, tempo de criação e prefixo de ID de instância. Use esta operação para monitorizar todas as orquestrações ativas ou encontrar instâncias específicas.

Solicitação

Runtime de funções 2.x (recomendado):

GET /runtime/webhooks/durabletask/instances?
    taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
    &createdTimeFrom={timestamp}
    &createdTimeTo={timestamp}
    &runtimeStatus={runtimeStatus1,runtimeStatus2,...}
    &instanceIdPrefix={prefix}
    &showInput=[true|false]
    &top={integer}

Runtime de funções 1.x (legado):

GET /admin/extensions/DurableTaskExtension/instances
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
    &createdTimeFrom={timestamp}
    &createdTimeTo={timestamp}
    &runtimeStatus={runtimeStatus1,runtimeStatus2,...}
    &instanceIdPrefix={prefix}
    &showInput=[true|false]
    &top={integer}

Os parâmetros de pedido para esta API incluem o conjunto padrão mencionado anteriormente e os seguintes parâmetros únicos:

Campo Tipo de parâmetro Description
showInput String de consulta Parâmetro opcional. Se definido para false, a entrada da função não está incluída na carga útil de resposta.
showHistoryOutput String de consulta Parâmetro opcional. Se definido para true, inclui as saídas da função no histórico de execução da orquestração.
createdTimeFrom String de consulta Parâmetro opcional. Quando especificado, filtra a lista de instâncias retornadas que foram criadas no carimbo de data e hora ISO8601 especificado ou posterior.
createdTimeTo String de consulta Parâmetro opcional. Quando especificado, filtra a lista de instâncias devolvidas que foram criadas no mesmo, ou antes, do carimbo temporal ISO8601 dado.
runtimeStatus String de consulta Parâmetro opcional. Quando especificado, filtra a lista de instâncias devolvidas com base no seu estado de execução. Para ver a lista de possíveis valores de estado em tempo de execução, consulte o artigo Querying instances .
instanceIdPrefix String de consulta Parâmetro opcional. Quando especificado, filtra a lista de instâncias devolvidas para incluir apenas as instâncias cujo ID de instância começa com a cadeia de prefixos especificada. Disponível a partir da versão 2.7.2 da extensão.
top String de consulta Parâmetro opcional. Quando especificado, limita o número de instâncias devolvidas pela consulta.

Resposta

Aqui está um exemplo de carga útil de resposta incluindo o estado da orquestração (formatado para melhor legibilidade):

[
    {
        "instanceId": "7af46ff000564c65aafbfe99d07c32a5",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2018-06-04T10:46:39Z",
        "lastUpdatedTime": "2018-06-04T10:46:47Z"
    },
    {
        "instanceId": "80eb7dd5c22f4eeba9f42b062794321e",
        "runtimeStatus": "Running",
        "input": null,
        "customStatus": null,
        "output": null,
        "createdTime": "2018-06-04T15:18:28Z",
        "lastUpdatedTime": "2018-06-04T15:18:38Z"
    },
    {
        "instanceId": "9124518926db408ab8dfe84822aba2b1",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2018-06-04T10:46:54Z",
        "lastUpdatedTime": "2018-06-04T10:47:03Z"
    },
    {
        "instanceId": "d100b90b903c4009ba1a90868331b11b",
        "runtimeStatus": "Pending",
        "input": null,
        "customStatus": null,
        "output": null,
        "createdTime": "2018-06-04T15:18:39Z",
        "lastUpdatedTime": "2018-06-04T15:18:39Z"
    }
]

Observação

Esta operação pode ser dispendiosa em termos de I/O Azure Storage se estiver a usar o fornecedor Azure Storage e há muitas linhas na tabela de Instâncias. Para mais informações sobre a tabela de Instâncias, consulte a documentação do fornecedor Azure Storage.

Se existirem mais resultados, um token de continuação é devolvido no cabeçalho da resposta. O nome do cabeçalho é x-ms-continuation-token.

Atenção

O resultado da consulta pode devolver menos itens do que o limite especificado por top. Quando receber resultados, deve sempre verificar se existe um token de continuação.

Se definir o valor do token de continuação no próximo cabeçalho do pedido, pode obter a página seguinte de resultados. O nome do cabeçalho do pedido também x-ms-continuation-tokené .

Purgar histórico de instância única

Apaga o histórico e artefatos relacionados de uma instância de orquestração especificada. Esta operação liberta recursos de armazenamento e não pode ser desfeita.

Solicitação

Runtime de funções 2.x (recomendado):

DELETE /runtime/webhooks/durabletask/instances/{instanceId}
    ?taskHub={taskHub}
    &connection={connection}
    &code={systemKey}

Runtime de funções 1.x (legado):

DELETE /admin/extensions/DurableTaskExtension/instances/{instanceId}
    ?taskHub={taskHub}
    &connection={connection}
    &code={systemKey}

Os parâmetros de pedido para esta API incluem o conjunto padrão mencionado anteriormente e os seguintes parâmetros únicos:

Campo Tipo de parâmetro Description
instanceId URL O ID da instância de orquestração.

Resposta

Os seguintes valores do código de estado HTTP podem ser retornados.

  • HTTP 200 (OK): O histórico das instâncias foi eliminado com sucesso.
  • HTTP 404 (Não Encontrado): A instância especificada não existe.

A carga útil de resposta para o caso HTTP 200 é um objeto JSON com o seguinte campo:

Campo Tipo de dados Description
instancesDeleted número inteiro O número de instâncias apagadas. Para o caso de instância única, este valor deve sempre ser 1.

Aqui está um exemplo de carga útil de resposta (formatada para legibilidade):

{
    "instancesDeleted": 1
}

Purgar múltiplos históricos de instâncias

Apaga o histórico e os artefactos de várias instâncias ao mesmo tempo, filtrados por estado, hora de criação ou prefixo do ID da instância. Use isto para limpar instâncias antigas em massa e gerir custos de armazenamento.

Solicitação

Runtime de funções 2.x (recomendado):

DELETE /runtime/webhooks/durabletask/instances
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
    &createdTimeFrom={timestamp}
    &createdTimeTo={timestamp}
    &runtimeStatus={runtimeStatus1,runtimeStatus2,...}

Runtime de funções 1.x (legado):

DELETE /admin/extensions/DurableTaskExtension/instances
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
    &createdTimeFrom={timestamp}
    &createdTimeTo={timestamp}
    &runtimeStatus={runtimeStatus1,runtimeStatus2,...}

Os parâmetros de pedido para esta API incluem o conjunto padrão mencionado anteriormente e os seguintes parâmetros únicos:

Campo Tipo de parâmetro Description
createdTimeFrom String de consulta Filtra a lista de instâncias purgadas que foram criadas na data ou após o timestamp ISO8601 indicado.
createdTimeTo String de consulta Parâmetro opcional. Quando especificado, filtra a lista de instâncias purgadas que foram criadas na data ISO8601 especificada ou antes do carimbo de data/hora fornecido.
runtimeStatus String de consulta Parâmetro opcional. Quando especificado, filtra a lista de instâncias purgadas com base no seu estado de execução. Para ver a lista de possíveis valores de estado em tempo de execução, consulte o artigo Querying instances .

Observação

Esta operação pode ser dispendiosa em termos de I/O Azure Storage se estiver a usar o fornecedor Azure Storage e há muitas linhas nas tabelas de Instâncias ou Histórico. Para mais informações sobre estas tabelas, consulte Desempenho e escala em Durable Functions (Azure Functions).

Resposta

Os seguintes valores do código de estado HTTP podem ser retornados.

  • HTTP 200 (OK): O histórico das instâncias foi eliminado com sucesso.
  • HTTP 404 (Não Encontrado): Não foram encontradas instâncias que correspondam à expressão do filtro.

A carga útil de resposta para o caso HTTP 200 é um objeto JSON com o seguinte campo:

Campo Tipo de dados Description
instancesDeleted número inteiro O número de instâncias apagadas.

Aqui está um exemplo de carga útil de resposta (formatada para legibilidade):

{
    "instancesDeleted": 250
}

Acionar evento

Envia uma mensagem de notificação de evento para uma instância de orquestração em execução. A orquestração deve estar à espera deste evento pelo nome usando WaitForExternalEvent ou wait_for_external_event.

Solicitação

Runtime de funções 2.x (recomendado):

POST /runtime/webhooks/durabletask/instances/{instanceId}/raiseEvent/{eventName}
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}

Runtime de funções 1.x (legado):

POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/raiseEvent/{eventName}
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}

Os parâmetros de pedido para esta API incluem o conjunto padrão mencionado anteriormente e os seguintes parâmetros únicos:

Campo Tipo de parâmetro Description
instanceId URL O ID da instância de orquestração.
eventName URL O nome do evento que a instância de orquestração alvo está a aguardar.
{content} Solicitar conteúdo A carga útil de eventos formatada em JSON.

Resposta

Vários valores possíveis de código de estado podem ser devolvidos.

  • HTTP 202 (Aceite): O evento levantado foi aceite para processamento.
  • HTTP 400 (pedido mau): O conteúdo do pedido não era do tipo application/json ou não era JSON válido.
  • HTTP 404 (Não Encontrado): A instância especificada não foi encontrada.
  • HTTP 410 (Desaparecido): A instância especificada foi concluída ou falhou e não consegue processar quaisquer eventos levantados.

Aqui está um pedido de exemplo que envia a string "incr" JSON para uma instância à espera de uma operação chamada evento:

POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/raiseEvent/operation?taskHub=DurableFunctionsHub&connection=Storage&code=XXX
Content-Type: application/json
Content-Length: 6

"incr"

As respostas para esta API não contêm qualquer conteúdo.

Terminar instância

Termina uma instância de orquestração em execução.

Solicitação

Runtime de funções 2.x (recomendado):

POST /runtime/webhooks/durabletask/instances/{instanceId}/terminate
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
    &reason={text}

Runtime de funções 1.x (legado):

POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/terminate
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
    &reason={text}

Os parâmetros de pedido para esta API incluem o conjunto padrão mencionado anteriormente e o seguinte parâmetro único.

Campo Tipo de parâmetro Description
instanceId URL O ID da instância de orquestração.
reason String de consulta Opcional. A razão para encerrar a instância de orquestração.

Resposta

Vários valores possíveis de código de estado podem ser devolvidos.

  • HTTP 202 (Aceite): O pedido de terminação foi aceite para processamento.
  • HTTP 404 (Não Encontrado): A instância especificada não foi encontrada.
  • HTTP 410 (Desaparecido): A instância especificada foi concluída ou falhou.

Aqui está um pedido de exemplo que termina uma instância em execução e especifica uma razão de buggy:

POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/terminate?reason=buggy&taskHub=DurableFunctionsHub&connection=Storage&code=XXX

As respostas para esta API não contêm qualquer conteúdo.

Suspensão de instância

Pausa uma instância de orquestração em execução sem a terminar. A instância pode ser retomada mais tarde usando a resume operação.

Solicitação

Na versão 2.x do runtime Functions, o pedido está formatado da seguinte forma (várias linhas são mostradas para maior clareza):

POST /runtime/webhooks/durabletask/instances/{instanceId}/suspend
    ?reason={text}
    &taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
Campo Tipo de parâmetro Description
instanceId URL O ID da instância de orquestração.
reason String de consulta Opcional. A razão para suspender a instância de orquestração.

Resposta

Vários valores possíveis de código de estado podem ser devolvidos.

  • HTTP 202 (Aceite): O pedido de suspensão foi aceite para processamento. Não é respondido.
  • HTTP 404 (Não Encontrado): A instância especificada não foi encontrada.
  • HTTP 410 (Desaparecido): A instância especificada foi concluída, falhou ou terminou e não pode ser suspensa.

Verificação: Após receber HTTP 202, consulte o estado da instância usando GET /runtime/webhooks/durabletask/instances/{instanceId} para verificar se runtimeStatus mudou para "Suspended".

Retomar instância

Retoma a execução de uma instância de orquestração previamente suspensa.

Solicitação

Na versão 2.x do runtime Functions, o pedido está formatado da seguinte forma (várias linhas são mostradas para maior clareza):

POST /runtime/webhooks/durabletask/instances/{instanceId}/resume
    ?reason={text}
    &taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
Campo Tipo de parâmetro Description
instanceId URL O ID da instância de orquestração.
reason String de consulta Opcional. A razão para reanudar a instância de orquestração.

Resposta

Vários valores possíveis de código de estado podem ser devolvidos.

  • HTTP 202 (Aceite): O pedido de currículo foi aceite para processamento. Não é respondido.
  • HTTP 404 (Não Encontrado): A instância especificada não foi encontrada.
  • HTTP 410 (Desaparecido): A instância especificada foi concluída, falhou ou terminou e não pode ser retomada.

Verificação: Após receber HTTP 202, consulte o estado da instância usando GET /runtime/webhooks/durabletask/instances/{instanceId} para verificar se runtimeStatus mudou para "Running".

Instância Rewind (pré-visualização)

Restaura uma instância de orquestração falhada para um estado operacional reexecutando as operações falhadas mais recentes. Esta funcionalidade permite a recuperação de falhas transitórias sem intervenção manual.

Solicitação

Runtime de funções 2.x (recomendado):

POST /runtime/webhooks/durabletask/instances/{instanceId}/rewind
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
    &reason={text}

Runtime de funções 1.x (legado):

POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/rewind
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
    &reason={text}

Os parâmetros de pedido para esta API incluem o conjunto padrão mencionado anteriormente e o seguinte parâmetro único.

Campo Tipo de parâmetro Description
instanceId URL O ID da instância de orquestração.
reason String de consulta Opcional. A razão para reiniciar a instância de orquestração.

Resposta

Vários valores possíveis de código de estado podem ser devolvidos.

  • HTTP 202 (Aceite): O pedido de rebobinamento foi aceite para processamento.
  • HTTP 404 (Não Encontrado): A instância especificada não foi encontrada.
  • HTTP 410 (Desaparecido): A instância especificada foi concluída ou terminada.

Aqui está um pedido de exemplo que rebobina uma instância com falha e especifica um motivo de fixed:

POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/rewind?reason=fixed&taskHub=DurableFunctionsHub&connection=Storage&code=XXX

As respostas para esta API não contêm qualquer conteúdo.

Entidade do sinal

Envia uma mensagem de operação unidirecional para uma Entidade Durável. Se a entidade não existir, é criada automaticamente. As operações da entidade são processadas sequencialmente e persistem de forma duradoura.

Observação

Entidades duráveis estão disponíveis a partir do Durable Functions 2.0.

Solicitação

O pedido HTTP está formatado da seguinte forma (são mostradas várias linhas para maior clareza):

POST /runtime/webhooks/durabletask/entities/{entityName}/{entityKey}
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
    &op={operationName}

Os parâmetros de pedido para esta API incluem o conjunto padrão mencionado anteriormente e os seguintes parâmetros únicos:

Campo Tipo de parâmetro Description
entityName URL O nome (tipo) da entidade.
entityKey URL A chave (ID único) da entidade.
op String de consulta Opcional. O nome da operação definida pelo utilizador a invocar.
{content} Solicitar conteúdo A carga útil de eventos formatada em JSON.

Aqui está um pedido de exemplo que envia uma mensagem "Adicionar" definida pelo utilizador para uma Counter entidade chamada steps. O conteúdo da mensagem é o valor 5. Se a entidade ainda não existir, este pedido cria-a:

POST /runtime/webhooks/durabletask/entities/Counter/steps?op=Add
Content-Type: application/json

5

Observação

Por defeito, com entidades baseadas em classes em .NET, especificar o valor op de delete elimina o estado de uma entidade. Se a entidade definir uma operação chamada delete, no entanto, essa operação definida pelo utilizador é invocada em vez disso.

Resposta

Esta operação tem várias respostas possíveis:

  • HTTP 202 (Aceite): A operação do sinal foi aceite para processamento assíncrono.
  • HTTP 400 (pedido mau): O conteúdo do pedido não era do tipo application/json, não era JSON válido ou tinha um valor inválido entityKey .
  • HTTP 404 (Não Encontrado): O especificado entityName não foi encontrado.

Um pedido HTTP bem-sucedido não contém qualquer conteúdo na resposta. Um pedido HTTP falhado pode conter informação de erro no formato JSON no conteúdo da resposta.

Obter entidade

Obtém o estado da entidade especificada.

Solicitação

O pedido HTTP está formatado da seguinte forma (são mostradas várias linhas para maior clareza):

GET /runtime/webhooks/durabletask/entities/{entityName}/{entityKey}
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}

Resposta

Esta operação tem duas possíveis respostas:

  • HTTP 200 (OK): A entidade especificada existe.
  • HTTP 404 (Não Encontrado): A entidade especificada não foi encontrada.

Uma resposta bem-sucedida contém o estado serializado em JSON da entidade como seu conteúdo.

Example

Para obter o estado de uma entidade existente Counter nomeado steps:

GET /runtime/webhooks/durabletask/entities/Counter/steps

Se a entidade Counter simplesmente contivesse um número de passos guardados num currentValue campo, o conteúdo da resposta poderia ser o seguinte (formatado para legibilidade):

{
    "currentValue": 5
}

Listar entidades

Pode consultar várias entidades pelo nome da entidade ou pela data da última operação.

Solicitação

O pedido HTTP está formatado da seguinte forma (são mostradas várias linhas para maior clareza):

GET /runtime/webhooks/durabletask/entities/{entityName}
    ?taskHub={taskHub}
    &connection={connectionName}
    &code={systemKey}
    &lastOperationTimeFrom={timestamp}
    &lastOperationTimeTo={timestamp}
    &fetchState=[true|false]
    &top={integer}

Os parâmetros de pedido para esta API incluem o conjunto padrão mencionado anteriormente e os seguintes parâmetros únicos:

Campo Tipo de parâmetro Description
entityName URL Opcional. Caso especificado, filtra a lista de entidades devolvidas pelo nome da entidade, sem distinção entre maiúsculas e minúsculas.
fetchState String de consulta Parâmetro opcional. Se definido para true, o estado da entidade é incluído na carga útil de resposta.
lastOperationTimeFrom String de consulta Parâmetro opcional. Quando especificado, filtra a lista de entidades devolvidas que processaram operações após o timestamp ISO8601 dado.
lastOperationTimeTo String de consulta Parâmetro opcional. Quando especificado, filtra a lista de entidades devolvidas que realizaram operações antes do timestamp ISO8601 indicado.
top String de consulta Parâmetro opcional. Quando especificado, limita o número de entidades devolvidas pela consulta.

Resposta

Uma resposta HTTP 200 bem-sucedida contém um array serializado em JSON de entidades e, opcionalmente, o estado de cada entidade.

Por defeito, a operação devolve as primeiras 100 entidades que correspondem aos critérios da consulta. O chamador pode especificar um valor de parâmetro da string de consulta para top devolver um número máximo diferente de resultados. Se existirem mais resultados para além do que é devolvido, um token de continuação também é devolvido no cabeçalho de resposta. O nome do cabeçalho é x-ms-continuation-token.

Se definir o valor do token de continuação no próximo cabeçalho do pedido, pode obter a página seguinte de resultados. O nome do cabeçalho do pedido também x-ms-continuation-tokené .

Exemplo - listar todas as entidades

Para listar todas as entidades no hub de tarefas:

GET /runtime/webhooks/durabletask/entities

O JSON da resposta pode ser o seguinte (formatado para legibilidade):

[
    {
        "entityId": { "key": "cats", "name": "counter" },
        "lastOperationTime": "2019-12-18T21:45:44.6326361Z",
    },
    {
        "entityId": { "key": "dogs", "name": "counter" },
        "lastOperationTime": "2019-12-18T21:46:01.9477382Z"
    },
    {
        "entityId": { "key": "mice", "name": "counter" },
        "lastOperationTime": "2019-12-18T21:46:15.4626159Z"
    },
    {
        "entityId": { "key": "radio", "name": "device" },
        "lastOperationTime": "2019-12-18T21:46:18.2616154Z"
    },
]

Exemplo - filtrar a lista de entidades

Para listar as duas counter primeiras entidades e obter o seu estado:

GET /runtime/webhooks/durabletask/entities/counter?top=2&fetchState=true

O JSON da resposta pode ser o seguinte (formatado para legibilidade):

[
    {
        "entityId": { "key": "cats", "name": "counter" },
        "lastOperationTime": "2019-12-18T21:45:44.6326361Z",
        "state": { "value": 9 }
    },
    {
        "entityId": { "key": "dogs", "name": "counter" },
        "lastOperationTime": "2019-12-18T21:46:01.9477382Z",
        "state": { "value": 10 }
    }
]

Exemplo de fluxo de trabalho completo

Este exemplo demonstra um ciclo completo de vida de orquestração usando curl comandos. Também podes usar o Postman, Thunder Client ou qualquer cliente HTTP.

1. Iniciar uma orquestração

Iniciar uma nova ProcessOrder orquestração com dados de entrada:

curl -X POST "http://localhost:7071/runtime/webhooks/durabletask/orchestrators/ProcessOrder" \
  -H "Content-Type: application/json" \
  -d '{
    "orderId": "ORD-12345",
    "customerId": "CUST-789",
    "amount": 150.00
  }'

Resposta (HTTP 202):

{
  "id": "abc123def456",
  "statusQueryGetUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456?code=XXX",
  "sendEventPostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456/raiseEvent/{eventName}?code=XXX",
  "terminatePostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456/terminate?reason={text}&code=XXX"
}

Guardar o ID da instância: abc123def456

2. Sondagem para o estado

Verifique o progresso da orquestração:

curl "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456?code=XXX"

Resposta durante a execução (HTTP 202):

{
  "runtimeStatus": "Running",
  "input": { "orderId": "ORD-12345", "customerId": "CUST-789", "amount": 150.00 },
  "output": null,
  "createdTime": "2026-01-23T10:30:00Z",
  "lastUpdatedTime": "2026-01-23T10:30:05Z"
}

Resposta quando concluída (HTTP 200):

{
  "runtimeStatus": "Completed",
  "input": { "orderId": "ORD-12345", "customerId": "CUST-789", "amount": 150.00 },
  "output": { "status": "shipped", "trackingNumber": "TRK-98765" },
  "createdTime": "2026-01-23T10:30:00Z",
  "lastUpdatedTime": "2026-01-23T10:30:15Z"
}

3. Enviar um evento externo (opcional)

Se a orquestração estiver à espera de aprovação, envie um evento de aprovação:

curl -X POST "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456/raiseEvent/ApprovalReceived?code=XXX" \
  -H "Content-Type: application/json" \
  -d '{ "approved": true, "reviewer": "manager@contoso.com" }'

Resposta: HTTP 202 (Aceite)

4. Histórico de limpeza (opcional)

Depois de a orquestração terminar, purgar a sua história:

curl -X DELETE "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456?code=XXX"

Resposta (HTTP 200):

{
  "instancesDeleted": 1
}

Próximos passos