Referência de API HTTP
A extensão Durable Functions expõe um conjunto de APIs HTTP internas que podem ser usadas para executar tarefas de gerenciamento em orquestrações, entidadese hubs de tarefas. Essas APIs HTTP são webhooks de extensibilidade autorizadas pelo host do Azure Functions, mas manipuladas diretamente pela extensão Durable Functions.
A URL base para as APIs mencionadas neste artigo é a mesma que a URL base para seu aplicativo de funções. Ao desenvolver localmente usando as Azure Functions Core Tools, a URL base normalmente é http://localhost:7071
. No serviço hospedado do Azure Functions, a URL base normalmente é https://{appName}.azurewebsites.net
. Também há suporte para nomes de host personalizados se configurados em seu aplicativo do Serviço de Aplicativo.
Todas as APIs HTTP implementadas pela extensão exigem os parâmetros a seguir. O tipo de dados de todos os parâmetros é string
.
Parâmetro | Tipo de parâmetro | Descrição |
---|---|---|
taskHub |
Cadeia de consulta | O nome do hub de tarefas. Se não for especificado, o nome do hub de tarefas do aplicativo de funções será presumido. |
connection |
Cadeia de consulta | O nome da configuração do aplicativo de conexão para o provedor de armazenamento de back-end. Se não for especificada, a configuração de conexão padrão do aplicativo de funções será presumida. |
systemKey |
Cadeia de consulta | A chave de autorização necessária para invocar a API. |
systemKey
é uma chave de autorização gerada automaticamente pelo host do Azure Functions. Ela concede acesso especificamente às APIs da extensão de Tarefas Duráveis e pode ser gerenciada da mesma maneira que as outras chaves de acesso do Azure Functions. Você pode gerar URLs que contenham os valores de cadeia de caracteres de consulta corretos taskHub
, connection
e systemKey
usando APIs de associação do cliente de orquestração, como as APIs CreateCheckStatusResponse
e CreateHttpManagementPayload
no .NET, as APIs createCheckStatusResponse
e createHttpManagementPayload
no JavaScript etc.
As próximas seções tratam das APIs HTTP específicas com suporte da extensão e fornecem exemplos de como elas podem ser usadas.
Iniciar orquestração
Inicia a execução de uma nova instância da função de orquestrador especificada.
Solicitação
Para a versão 1.x do tempo de execução do Functions, a solicitação é formatada desta forma (são mostradas várias linhas para maior clareza):
POST /admin/extensions/DurableTaskExtension/orchestrators/{functionName}/{instanceId?}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Na versão 2.x do tempo de execução do Functions, o formato da URL tem todos os mesmos parâmetros, mas com prefixo ligeiramente diferente:
POST /runtime/webhooks/durabletask/orchestrators/{functionName}/{instanceId?}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Parâmetros de solicitação para essa API incluem o conjunto padrão mencionado anteriormente, bem como o parâmetro exclusivo a seguir:
Campo | Tipo de parâmetro | Descrição |
---|---|---|
functionName |
URL | O nome da função de orquestrador a ser iniciada. |
instanceId |
URL | Parâmetro opcional. A ID da instância de orquestração. Se não especificado, a função de orquestrador será iniciada com uma ID de instância aleatória. |
{content} |
Conteúdo da solicitação | Opcional. A entrada da função de orquestrador formatada em JSON. |
Resposta
Vários valores de código de status possíveis podem ser retornados.
- HTTP 202 (Aceito) : a função de orquestrador especificada foi agendada para iniciar a execução. O cabeçalho de resposta
Location
contém uma URL para sondar o status da orquestração. - HTTP 400 (Solicitação Inválida) : a função de orquestrador especificada não existe, a ID de instância especificada não era válida ou o conteúdo da solicitação não era um JSON válido.
Veja a seguir um exemplo de solicitação que inicia uma função de orquestrador RestartVMs
e inclui a carga do 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"
}
O conteúdo da resposta para os casos de HTTP 202 é um objeto JSON com os campos a seguir:
Campo | Descrição |
---|---|
id |
A ID da instância de orquestração. |
statusQueryGetUri |
A URL de status da instância de orquestração. |
sendEventPostUri |
A URL "acionar evento" da instância de orquestração. |
terminatePostUri |
A URL "encerrar" da instância de orquestração. |
purgeHistoryDeleteUri |
A URL "limpar histórico" da instância de orquestração. |
rewindPostUri |
(visualização) A URL "retroceder" da instância de orquestração. |
suspendPostUri |
A URL "suspender" da instância de orquestração. |
resumePostUri |
A URL "retomar" da instância de orquestração. |
O tipo de dados de todos os campos é string
.
Este é um exemplo de conteúdo de resposta para uma instância de orquestração com abc123
como ID (formatada para facilitar a leitura):
{
"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 deve ser compatível com o Padrão de Consumidor de Sondagem. Ela também inclui estes cabeçalhos de resposta notáveis:
- Location: a URL do ponto de extremidade do status. Essa URL contém o mesmo valor do
statusQueryGetUri
campo. - Retry-After: o número de segundos de espera entre as operações de sondagem. O valor padrão é
10
.
Para obter mais informações sobre o padrão de sondagem HTTP assíncrona, consulte a documentação Rastreamento de operação HTTP assíncrona.
Obter status da instância
Obtém o status de uma instância de orquestração especificada.
Solicitação
Para a versão 1.x do tempo de execução do Functions, a solicitação é formatada desta forma (são mostradas várias linhas para maior clareza):
GET /admin/extensions/DurableTaskExtension/instances/{instanceId}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&showHistory=[true|false]
&showHistoryOutput=[true|false]
&showInput=[true|false]
&returnInternalServerErrorOnFailure=[true|false]
Na versão 2.x do tempo de execução do Functions, o formato da URL tem todos os mesmos parâmetros, mas com prefixo ligeiramente diferente:
GET /runtime/webhooks/durabletask/instances/{instanceId}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&showHistory=[true|false]
&showHistoryOutput=[true|false]
&showInput=[true|false]
&returnInternalServerErrorOnFailure=[true|false]
Parâmetros de solicitação para essa API incluem o conjunto padrão mencionado anteriormente, bem como o parâmetro exclusivo a seguir:
Campo | Tipo de parâmetro | Descrição |
---|---|---|
instanceId |
URL | A ID da instância de orquestração. |
showInput |
Cadeia de consulta | Parâmetro opcional. Se definido como false , a entrada da função não será incluída no conteúdo da resposta. |
showHistory |
Cadeia de consulta | Parâmetro opcional. Se definido como true , o histórico de execução da orquestração será incluído na carga da resposta. |
showHistoryOutput |
Cadeia de consulta | Parâmetro opcional. Se definido como true , as saídas da função serão incluídas no histórico de execução da orquestração. |
createdTimeFrom |
Cadeia de consulta | Parâmetro opcional. Quando especificado, filtra a lista de instâncias retornadas criadas no ou após o carimbo de data e hora ISO8601 especificado. |
createdTimeTo |
Cadeia de consulta | Parâmetro opcional. Quando especificado, filtra a lista de instâncias retornadas criadas no ou antes do carimbo de data e hora ISO8601 especificado. |
runtimeStatus |
Cadeia de consulta | Parâmetro opcional. Quando especificado, filtra a lista de instâncias retornadas com base em seu status de runtime. Para ver a lista de possíveis valores de status de tempo de execução, consulte o artigo Consulta de instâncias. |
returnInternalServerErrorOnFailure |
Cadeia de consulta | Parâmetro opcional. Se definido como true , essa API retornará uma resposta HTTP 500 em vez de 200, se a instância estiver em estado de falha. Esse parâmetro destina-se a cenários de sondagem de status automatizados. |
Resposta
Vários valores de código de status possíveis podem ser retornados.
- HTTP 200 (OK) : a instância especificada está em estado concluído ou de falha.
- HTTP 202 (Aceito): a instância especificada está em andamento.
- HTTP 400 (Solicitação incorreta): a instância especificada falhou ou foi encerrada.
- HTTP 404 (Não encontrado): a instância especificada não existe ou não começou a ser executada.
- HTTP 500 (Erro de Servidor Interno) : retornado somente quando
returnInternalServerErrorOnFailure
é definido comotrue
e a instância especificada falhou com exceção sem tratamento.
A carga de resposta para os casos de HTTP 200 e HTTP 202 é um objeto JSON com os campos a seguir:
Campo | Tipo de dados | Descrição |
---|---|---|
runtimeStatus |
string | O status de runtime da instância. Os valores incluem Em execução, Pendente, Com Falha, Cancelado, Encerrado, 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 caracteres de consulta for definido para false . |
customStatus |
JSON | Os dados JSON usados para status de orquestração personalizado. Este campo é null se não for definido. |
output |
JSON | A saída JSON da instância. Este campo será null se a instância não estiver no estado concluído. |
createdTime |
string | A hora em que a instância foi criada. Usa a notação estendida ISO 8601. |
lastUpdatedTime |
string | A hora em que a instância foi persistida pela última vez. Usa a notação estendida ISO 8601. |
historyEvents |
JSON | Uma matriz JSON contendo o histórico de execução da orquestração. Esse campo é null , exceto se o parâmetro da cadeia de caracteres de consulta showHistory estiver definido como true . |
Aqui está um exemplo de carga de resposta, incluindo o histórico de execução de orquestração e saídas de atividades (formatado 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 também inclui um cabeçalho de resposta Local que faz referência à mesma URL que o campo statusQueryGetUri
mencionado anteriormente.
Obter status de todas as instâncias
Você também pode consultar o status de todas as instâncias removendo o instanceId
da solicitação 'Obter status da instância'. Nesse caso, os parâmetros básicos são os mesmos de 'Obter status da instância'. Também há suporte para parâmetros de cadeia de caracteres de consulta para filtragem.
Solicitação
Para a versão 1.x do tempo de execução do Functions, a solicitação é formatada desta forma (são mostradas várias linhas para maior clareza):
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}
Na versão 2.x do tempo de execução do Functions, o formato da URL tem todos os mesmos parâmetros, mas com prefixo ligeiramente diferente:
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}
Parâmetros de solicitação para essa API incluem o conjunto padrão mencionado anteriormente, bem como o parâmetro exclusivo a seguir:
Campo | Tipo de parâmetro | Descrição |
---|---|---|
showInput |
Cadeia de consulta | Parâmetro opcional. Se definido como false , a entrada da função não será incluída no conteúdo da resposta. |
showHistoryOutput |
Cadeia de consulta | Parâmetro opcional. Se definido como true , as saídas da função serão incluídas no histórico de execução da orquestração. |
createdTimeFrom |
Cadeia de consulta | Parâmetro opcional. Quando especificado, filtra a lista de instâncias retornadas criadas no ou após o carimbo de data e hora ISO8601 especificado. |
createdTimeTo |
Cadeia de consulta | Parâmetro opcional. Quando especificado, filtra a lista de instâncias retornadas criadas no ou antes do carimbo de data e hora ISO8601 especificado. |
runtimeStatus |
Cadeia de consulta | Parâmetro opcional. Quando especificado, filtra a lista de instâncias retornadas com base em seu status de runtime. Para ver a lista de possíveis valores de status de tempo de execução, consulte o artigo Consulta de instâncias. |
instanceIdPrefix |
Cadeia de consulta | Parâmetro opcional. Quando especificado, filtra a lista de instâncias retornadas para incluir apenas instâncias cuja ID da instância começa com a cadeia de caracteres de prefixo especificada. Disponível a partir da versão 2.7.2 da extensão. |
top |
Cadeia de consulta | Parâmetro opcional. Quando especificado, limita o número de instâncias retornadas pela consulta. |
Resposta
Aqui está um exemplo de cargas de resposta, incluindo o status de orquestração (formatado para 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
Essa operação pode ser muito cara em termos de E/S do armazenamento do Azure se você estiver usando o provedor padrão de Armazenamento do Azure e se houver muitas linhas na tabela de Instâncias. Mais detalhes sobre a tabela de Instância podem ser encontrados na documentação do provedor de Armazenamento do Microsoft Azure.
Se houver mais resultados, será retornado um token de continuação no cabeçalho de resposta. O nome do cabeçalho x-ms-continuation-token
.
Cuidado
O resultado da consulta pode retornar menos itens do que o limite especificado por top
. Ao receber resultados, você deve sempre verificar se há um token de continuação.
Se você definir o valor do token de continuação no cabeçalho da próxima solicitação, terá a próxima página de resultados. O nome do cabeçalho da solicitação também é x-ms-continuation-token
.
Limpar histórico de instância única
Exclui o histórico e os artefatos relacionados para uma instância de orquestração especificada.
Solicitação
Para a versão 1.x do tempo de execução do Functions, a solicitação é formatada desta forma (são mostradas várias linhas para maior clareza):
DELETE /admin/extensions/DurableTaskExtension/instances/{instanceId}
?taskHub={taskHub}
&connection={connection}
&code={systemKey}
Na versão 2.x do tempo de execução do Functions, o formato da URL tem todos os mesmos parâmetros, mas com prefixo ligeiramente diferente:
DELETE /runtime/webhooks/durabletask/instances/{instanceId}
?taskHub={taskHub}
&connection={connection}
&code={systemKey}
Parâmetros de solicitação para essa API incluem o conjunto padrão mencionado anteriormente, bem como o parâmetro exclusivo a seguir:
Campo | Tipo de parâmetro | Descrição |
---|---|---|
instanceId |
URL | A ID da instância de orquestração. |
Resposta
Podem ser retornados os valores de código de status HTTP a seguir.
- HTTP 200 (OK) : o histórico da instância foi limpo com êxito.
- HTTP 404 (Não Encontrado) : a instância especificada não existe.
A carga de resposta para o caso de HTTP 200 é um objeto JSON com o campo a seguir:
Campo | Tipo de dados | Descrição |
---|---|---|
instancesDeleted |
Número inteiro | O número de instâncias excluídas. No caso de instância única, esse valor deve ser sempre 1 . |
Veja um exemplo de carga de resposta (formatada para facilitar a leitura):
{
"instancesDeleted": 1
}
Limpar históricos de várias instâncias
Você também pode excluir o histórico e artefatos relacionados para várias instâncias em um hub de tarefas removendo a {instanceId}
da solicitação 'Limpar o histórico de instância única'. Para limpar seletivamente o histórico de instâncias, use os mesmos filtros descritos na solicitação 'Obter status de todas as instâncias'.
Solicitação
Para a versão 1.x do tempo de execução do Functions, a solicitação é formatada desta forma (são mostradas várias linhas para maior clareza):
DELETE /admin/extensions/DurableTaskExtension/instances
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
Na versão 2.x do tempo de execução do Functions, o formato da URL tem todos os mesmos parâmetros, mas com prefixo ligeiramente diferente:
DELETE /runtime/webhooks/durabletask/instances
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
Parâmetros de solicitação para essa API incluem o conjunto padrão mencionado anteriormente, bem como o parâmetro exclusivo a seguir:
Campo | Tipo de parâmetro | Descrição |
---|---|---|
createdTimeFrom |
Cadeia de consulta | Filtra a lista de instâncias limpas criadas no ou após o carimbo de data e hora ISO8601 especificado. |
createdTimeTo |
Cadeia de consulta | Parâmetro opcional. Quando especificado, filtra a lista de instâncias limpas criadas no ou antes do carimbo de data e hora ISO8601 especificado. |
runtimeStatus |
Cadeia de consulta | Parâmetro opcional. Quando especificado, filtra a lista de instâncias limpas com base em seu status de tempo de execução. Para ver a lista de possíveis valores de status de tempo de execução, consulte o artigo Consulta de instâncias. |
Observação
Essa operação pode ser muito cara em termos de E/S do armazenamento do Azure se você estiver usando o provedor padrão de Armazenamento do Azure e se houver muitas linhas nas tabelas de Instâncias e/ou Histórico. Veja mais detalhes sobre essas tabelas na documentação Desempenho e escala no Durable Functions (Azure Functions).
Resposta
Podem ser retornados os valores de código de status HTTP a seguir.
- HTTP 200 (OK) : o histórico da instância foi limpo com êxito.
- HTTP 404 (Não Encontrado) : nenhuma instância encontrada corresponde à expressão do filtro.
A carga de resposta para o caso de HTTP 200 é um objeto JSON com o campo a seguir:
Campo | Tipo de dados | Descrição |
---|---|---|
instancesDeleted |
Número inteiro | O número de instâncias excluídas. |
Veja um exemplo de carga de resposta (formatada para facilitar a leitura):
{
"instancesDeleted": 250
}
Acionar evento
Envia uma mensagem de notificação de evento para uma instância de orquestração em execução.
Solicitação
Para a versão 1.x do tempo de execução do Functions, a solicitação é formatada desta forma (são mostradas várias linhas para maior clareza):
POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/raiseEvent/{eventName}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Na versão 2.x do tempo de execução do Functions, o formato da URL tem todos os mesmos parâmetros, mas com prefixo ligeiramente diferente:
POST /runtime/webhooks/durabletask/instances/{instanceId}/raiseEvent/{eventName}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Parâmetros de solicitação para essa API incluem o conjunto padrão mencionado anteriormente, bem como o parâmetro exclusivo a seguir:
Campo | Tipo de parâmetro | Descrição |
---|---|---|
instanceId |
URL | A ID da instância de orquestração. |
eventName |
URL | O nome do evento que a instância de orquestração de destino está esperando. |
{content} |
Conteúdo da solicitação | A carga do evento em formato JSON. |
Resposta
Vários valores de código de status possíveis podem ser retornados.
- HTTP 202 (Aceito): o evento gerado foi aceito para processamento.
- HTTP 400 (Solicitação incorreta): o conteúdo da solicitação não era do tipo
application/json
ou não era um JSON válido. - HTTP 404 (Não encontrado): a instância especificada não foi encontrada.
- HTTP 410 (Não existe mais): a instância especificada foi concluída ou falhou e não pode processar os eventos gerados.
Veja um exemplo de solicitação que envia a cadeia de caracteres JSON "incr"
para uma instância que aguarda um evento nomeado operation:
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 têm nenhum conteúdo.
Encerrar instância
Encerra uma instância de orquestração em execução.
Solicitação
Para a versão 1.x do tempo de execução do Functions, a solicitação é formatada desta forma (são mostradas várias linhas para maior clareza):
POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/terminate
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
Na versão 2.x do tempo de execução do Functions, o formato da URL tem todos os mesmos parâmetros, mas com prefixo ligeiramente diferente:
POST /runtime/webhooks/durabletask/instances/{instanceId}/terminate
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
Parâmetros de solicitação para essa API incluem o conjunto padrão mencionado anteriormente, bem como o seguinte parâmetro exclusivo.
Campo | Tipo de parâmetro | Descrição |
---|---|---|
instanceId |
URL | A ID da instância de orquestração. |
reason |
Cadeia de consulta | Opcional. O motivo para encerrar a instância de orquestração. |
Resposta
Vários valores de código de status possíveis podem ser retornados.
- HTTP 202 (Aceito): a solicitação de encerramento foi aceita para processamento.
- HTTP 404 (Não encontrado): a instância especificada não foi encontrada.
- HTTP 410 (Não existe mais): a instância especificada foi concluída ou falhou.
Veja um exemplo de solicitação que encerra uma instância em execução e especifica o motivo buggy:
POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/terminate?reason=buggy&taskHub=DurableFunctionsHub&connection=Storage&code=XXX
As respostas para esta API não têm nenhum conteúdo.
Suspender instância
Suspende uma instância de orquestração em execução.
Solicitação
Na versão 2.x do tempo de execução do Functions, a solicitação é formatada desta forma (são mostradas várias linhas para maior clareza):
POST /runtime/webhooks/durabletask/instances/{instanceId}/suspend
?reason={text}
&taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Campo | Tipo de parâmetro | Descrição |
---|---|---|
instanceId |
URL | A ID da instância de orquestração. |
reason |
Cadeia de consulta | Opcional. O motivo para suspender a instância de orquestração. |
Vários valores de código de status possíveis podem ser retornados.
- HTTP 202 (Aceita): a solicitação de suspensão foi aceita para processamento.
- HTTP 404 (Não encontrado): a instância especificada não foi encontrada.
- HTTP 410 (Não existe mais): a instância especificada foi concluída, falhou ou foi encerrada.
As respostas para esta API não têm nenhum conteúdo.
Retomar instância
Retoma uma instância de orquestração suspensa.
Solicitação
Na versão 2.x do tempo de execução do Functions, a solicitação é formatada desta forma (são mostradas várias linhas para maior clareza):
POST /runtime/webhooks/durabletask/instances/{instanceId}/resume
?reason={text}
&taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Campo | Tipo de parâmetro | Descrição |
---|---|---|
instanceId |
URL | A ID da instância de orquestração. |
reason |
Cadeia de consulta | Opcional. O motivo para retomar a instância de orquestração. |
Vários valores de código de status possíveis podem ser retornados.
- HTTP 202 (Aceita): a solicitação de retomada foi aceita para processamento.
- HTTP 404 (Não encontrado): a instância especificada não foi encontrada.
- HTTP 410 (Não existe mais): a instância especificada foi concluída, falhou ou foi encerrada.
As respostas para esta API não têm nenhum conteúdo.
Instância Gerenciada (versão prévia)
Restaura uma instância de orquestração com falha em um estado de execução ao reproduzir novamente as operações com falha mais recentes.
Solicitação
Para a versão 1.x do tempo de execução do Functions, a solicitação é formatada desta forma (são mostradas várias linhas para maior clareza):
POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/rewind
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
Na versão 2.x do tempo de execução do Functions, o formato da URL tem todos os mesmos parâmetros, mas com prefixo ligeiramente diferente:
POST /runtime/webhooks/durabletask/instances/{instanceId}/rewind
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
Parâmetros de solicitação para essa API incluem o conjunto padrão mencionado anteriormente, bem como o seguinte parâmetro exclusivo.
Campo | Tipo de parâmetro | Descrição |
---|---|---|
instanceId |
URL | A ID da instância de orquestração. |
reason |
Cadeia de consulta | Opcional. O motivo para retroceder a instância de orquestração. |
Resposta
Vários valores de código de status possíveis podem ser retornados.
- HTTP 202 (Aceito): a solicitação de retroceder foi aceita para processamento.
- HTTP 404 (Não encontrado): a instância especificada não foi encontrada.
- HTTP 410 (Não existe mais): a instância especificada foi concluída ou falhou.
Veja um exemplo de solicitação que retrocede uma instância com falha e especifica o motivo corrigido:
POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/rewind?reason=fixed&taskHub=DurableFunctionsHub&connection=Storage&code=XXX
As respostas para esta API não têm nenhum conteúdo.
Entidade de sinal
Envia uma mensagem de operação unidirecional a uma Entidade Durável. Se a entidade não existir, será criada automaticamente.
Observação
As entidades duráveis estão disponíveis a partir do Durable Functions 2.0.
Solicitação
A solicitação HTTP é formatada como a seguir (são mostradas várias linhas para maior clareza):
POST /runtime/webhooks/durabletask/entities/{entityName}/{entityKey}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&op={operationName}
Parâmetros de solicitação para essa API incluem o conjunto padrão mencionado anteriormente, bem como o parâmetro exclusivo a seguir:
Campo | Tipo de parâmetro | Descrição |
---|---|---|
entityName |
URL | O nome (tipo) da entidade. |
entityKey |
URL | A chave (ID exclusiva) da entidade. |
op |
Cadeia de consulta | Opcional. O nome da operação definida pelo usuário a ser invocada. |
{content} |
Conteúdo da solicitação | A carga do evento em formato JSON. |
Este é um exemplo de solicitação que envia uma mensagem de "Adição" definida pelo usuário a uma entidade Counter
chamada steps
. O conteúdo da mensagem é o valor 5
. Se a entidade ainda não existir, será criada por essa solicitação:
POST /runtime/webhooks/durabletask/entities/Counter/steps?op=Add
Content-Type: application/json
5
Observação
Por padrão, com entidades baseadas em classe no .NET, a especificação do valor op
de delete
excluirá o estado de uma entidade. No entanto, se a entidade definir uma operação chamada delete
, essa operação definida pelo usuário será invocada.
Resposta
Essa operação tem várias respostas possíveis:
- HTTP 202 (Aceito) : A operação de sinal foi aceita para processamento assíncrono.
- HTTP 400 (Solicitação inválida) : o conteúdo da solicitação não era do tipo
application/json
, não era um JSON válido ou tinha um valorentityKey
inválido. - HTTP 404 (Não Encontrado) : a instância
entityName
especificada não foi encontrada.
Uma solicitação HTTP bem-sucedida não tem conteúdo na resposta. Uma solicitação HTTP com falha pode ter informações de erro formatadas em JSON no conteúdo da resposta.
Obter entidade
Obtém o estado da entidade especificada.
Solicitação
A solicitação HTTP é formatada como a seguir (são mostradas várias linhas para maior clareza):
GET /runtime/webhooks/durabletask/entities/{entityName}/{entityKey}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Resposta
Essa operação tem duas respostas possíveis:
- HTTP 200 (OK) : a entidade especificada existe.
- HTTP 404 (Não Encontrado) : a entidade especificada não foi encontrada.
Uma resposta bem-sucedida tem o estado serializado em JSON da entidade como conteúdo.
Exemplo
O exemplo de solicitação HTTP a seguir obtém o estado de uma entidade Counter
existente chamada steps
:
GET /runtime/webhooks/durabletask/entities/Counter/steps
Se a entidade Counter
contiver apenas uma série de etapas salvas em um campo currentValue
, o conteúdo da resposta poderá ser semelhante a este (formatado para facilitar a leitura):
{
"currentValue": 5
}
Listar entidades
Você pode consultar várias entidades pelo nome ou pela última data de operação.
Solicitação
A solicitação HTTP é formatada como a seguir (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}
Parâmetros de solicitação para essa API incluem o conjunto padrão mencionado anteriormente, bem como o parâmetro exclusivo a seguir:
Campo | Tipo de parâmetro | Descrição |
---|---|---|
entityName |
URL | Opcional. Quando especificado, filtra a lista de entidades retornadas pelo nome (não diferencia maiúsculas de minúsculas). |
fetchState |
Cadeia de consulta | Parâmetro opcional. Se definido como true , o estado da entidade será incluído no conteúdo da resposta. |
lastOperationTimeFrom |
Cadeia de consulta | Parâmetro opcional. Quando especificado, filtra a lista de entidades retornadas que processaram operações após o carimbo de data/hora ISO8601 fornecido. |
lastOperationTimeTo |
Cadeia de consulta | Parâmetro opcional. Quando especificado, filtra a lista de entidades retornadas que processaram operações antes do carimbo de data/hora ISO8601 fornecido. |
top |
Cadeia de consulta | Parâmetro opcional. Quando especificado, limita o número de entidades retornadas pela consulta. |
Resposta
Uma resposta HTTP 200 bem-sucedida contém uma matriz serializada JSON de entidades e, opcionalmente, o estado de cada uma delas.
Por padrão, a operação retorna as primeiras 100 entidades correspondente aos critérios de consulta. O chamador pode especificar um valor de parâmetro de cadeia de consulta para que top
retorne outro número máximo de resultados. Se houver mais resultados do que os retornados, também será retornado um token de continuação no cabeçalho de resposta. O nome do cabeçalho x-ms-continuation-token
.
Se você definir o valor do token de continuação no cabeçalho da próxima solicitação, terá a próxima página de resultados. O nome do cabeçalho da solicitação também é x-ms-continuation-token
.
Exemplo – listar todas as entidades
O exemplo de solicitação HTTP a seguir lista todas as entidades no hub de tarefas:
GET /runtime/webhooks/durabletask/entities
A resposta JSON pode ser parecida com a esta (formatada para facilitar a leitura):
[
{
"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 – filtragem da lista de entidades
O exemplo de solicitação HTTP a seguir lista apenas as duas primeiras entidades do tipo counter
e também busca seu estado:
GET /runtime/webhooks/durabletask/entities/counter?top=2&fetchState=true
A resposta JSON pode ser parecida com a esta (formatada para facilitar a leitura):
[
{
"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 }
}
]