Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La extensión Durable Functions expone un conjunto de API HTTP integradas que pueden realizar tareas de administración en orchestrations, entities y task hubs. Estas API HTTP son webhooks de extensibilidad que autoriza el host de Azure Functions, pero la extensión Durable Functions controla directamente.
Antes de usar estas API HTTP, asegúrese de que tiene:
- Conocimientos básicos de los conceptos del modelo de programación de Durable Task (orquestadores, actividades, entidades)
- Un proyecto Durable Functions inicializado con enlaces configurados
- Acceso a la dirección URL base de la aplicación de funciones, el nombre del centro de tareas, la configuración de conexión y la clave de autorización
Dirección URL base y parámetros comunes
Todas las API HTTP comparten la misma dirección URL base que la aplicación de funciones. Al desarrollar localmente mediante Azure Functions Core Tools, la dirección URL base suele ser http://localhost:7071. En el servicio hospedado Azure Functions, la dirección URL base suele ser https://{appName}.azurewebsites.net. La extensión también admite nombres de host personalizados si está configurado en la aplicación de App Service.
Todas las API HTTP implementadas por la extensión requieren los parámetros siguientes. El tipo de datos de todos los parámetros es .
| Parámetro | Tipo de parámetro | Description |
|---|---|---|
taskHub |
Cadena de consulta | Nombre del centro de tareas. Si no se especifica, se asume el nombre del centro de tareas de la aplicación de funciones actual. |
connection |
Cadena de consulta | Nombre de la configuración de la aplicación de conexión para el proveedor de almacenamiento back-end. Si no se especifica, se asume la configuración de conexión predeterminada para la aplicación de funciones. |
systemKey |
Cadena de consulta | Clave de autorización necesaria para invocar la API. |
Obtención de valores de parámetro
Uso de enlaces de cliente de orquestación (recomendado): Genere direcciones URL completas automáticamente mediante las API de enlace de cliente de orquestación :
- .NET:
CreateCheckStatusResponse(),CreateHttpManagementPayload() - JavaScript: ,
Construcción manual de direcciones URL:
: recuperado del archivo:
- v2.x:
- v1.x:
- También se puede configurar a través de la configuración de la aplicación mediante la sintaxis
: nombre de la configuración de la aplicación que contiene la conexión de almacenamiento. Recuperado de :
- v2.x: (el valor predeterminado es si no se especifica)
- v1.x: (el valor predeterminado es si no se especifica)
- Puede usar cadenas de conexión o conexiones basadas en identity (autenticación Microsoft Entra).
: clave de autorización específica de la extensión para las API de Durable Task. Recuperado desde Azure portal:
- Abrir la aplicación de funciones
- Seleccione Funciones → Claves de aplicación en el menú de la izquierda.
- En la sección Claves del sistema , busque la clave (normalmente generada automáticamente para la extensión)
- Copia del valor de clave
⚠️Seguridad nota: la clave del sistema concede acceso a todas las API HTTP de Durable Functions. No lo comparta públicamente ni inclúyelo en el código del lado cliente.
Cada API HTTP admite un conjunto coherente de patrones de solicitud y respuesta. En las secciones siguientes se proporciona información para cada operación.
Flujo de trabajo de API común
Un ciclo de vida de orquestación típico sigue esta secuencia:
- Iniciar la orquestación → → Devuelve el identificador de instancia y la dirección URL de estado
- Comprobación del estado → → Supervisar el progreso
- Enviar evento (opcional) → → Enviar señales externas
- Limpieza (opcional) → → Historial de purga
Para obtener detalles de la operación y ejemplos de solicitud/respuesta, consulte la referencia siguiente.
Iniciar orquestación
Comienza a ejecutar una nueva instancia de la función de orquestador especificada.
Solicitud
Importante
El formato de dirección URL difiere en función de la versión del entorno de ejecución de Functions. Seleccione el formato que coincida con el entorno.
Tiempo de ejecución de Functions 2.x (recomendado):
POST /runtime/webhooks/durabletask/orchestrators/{functionName}/{instanceId?}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Runtime de Functions 1.x (heredado):
POST /admin/extensions/DurableTaskExtension/orchestrators/{functionName}/{instanceId?}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Los parámetros de solicitud para esta API incluyen el conjunto predeterminado mencionado anteriormente y los siguientes parámetros únicos:
| Campo | Tipo de parámetro | Description |
|---|---|---|
functionName |
URL | Nombre de la función de orquestador que se va a iniciar. |
instanceId |
URL | Parámetro opcional. Identificador de la instancia de orquestación. Si no se especifica, la función de orquestador comienza con un identificador de instancia aleatorio. |
{content} |
Solicitar contenido | Opcional. Entrada de la función de orquestación en formato JSON. |
Respuesta
Se pueden devolver varios valores de código de estado posibles.
- HTTP 202 (aceptado): la función de orquestador especificada estaba programada para empezar a ejecutarse. El encabezado de respuesta contiene una dirección URL para sondear el estado de orquestación.
- HTTP 400 (solicitud incorrecta): la función de orquestador especificada no existe, el identificador de instancia especificado no es válido o el contenido de la solicitud no es JSON válido.
A continuación se muestra una solicitud de ejemplo que inicia una función de orquestador e incluye una carga 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"
}
La carga de respuesta para los casos HTTP 202 es un objeto JSON con los campos siguientes:
| Campo | Description |
|---|---|
id |
Identificador de la instancia de orquestación. |
statusQueryGetUri |
URL de estado de la instancia de orquestación. |
sendEventPostUri |
Dirección URL de generación del evento de la instancia de orquestación. |
terminatePostUri |
Dirección URL de finalización de la instancia de orquestación. |
purgeHistoryDeleteUri |
La dirección URL del "historial de purga" de la instancia de orquestación. |
rewindPostUri |
(versión preliminar) La dirección URL de "rebobinado" de la instancia de orquestación. |
suspendPostUri |
Dirección URL de "suspender" de la instancia de orquestación. |
resumePostUri |
Dirección URL de "reanudar"de la instancia de orquestación. |
El tipo de datos de todos los campos es .
Este es un ejemplo de carga de respuesta para una instancia de orquestación con como identificador (con formato de legibilidad):
{
"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"
}
La respuesta HTTP está pensada para ser compatible con el patrón de consumidor de sondeo. También incluye los siguientes encabezados de respuesta importantes:
- Ubicación: la dirección URL del punto de conexión de estado, que contiene el mismo valor que el campo.
- Retry-After: El número de segundos que se deben esperar entre las operaciones de sondeo. El valor predeterminado es .
Para obtener más información sobre el patrón de sondeo HTTP asincrónico, consulte la documentación de seguimiento de operaciones asincrónicas de HTTP .
Obtención del estado de la instancia
Obtiene el estado de una instancia de orquestación especificada. Úselo para supervisar el progreso de la orquestación y recuperar los resultados.
Solicitud
Tiempo de ejecución de Functions 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 Functions 1.x (heredado):
GET /admin/extensions/DurableTaskExtension/instances/{instanceId}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&showHistory=[true|false]
&showHistoryOutput=[true|false]
&showInput=[true|false]
&returnInternalServerErrorOnFailure=[true|false]
Los parámetros de solicitud para esta API incluyen el conjunto predeterminado mencionado anteriormente y los siguientes parámetros únicos:
| Campo | Tipo de parámetro | Description |
|---|---|---|
instanceId |
URL | Identificador de la instancia de orquestación. |
showInput |
Cadena de consulta | Parámetro opcional. Si se establece en , la entrada de la función no se incluye en la carga de respuesta. |
showHistory |
Cadena de consulta | Parámetro opcional. Si se establece en , el historial de ejecución de orquestación se incluye en la carga de respuesta. |
showHistoryOutput |
Cadena de consulta | Parámetro opcional. Si se establece en , las salidas de la función se incluyen en el historial de ejecución de orquestación. |
createdTimeFrom |
Cadena de consulta | Parámetro opcional. Cuando se especifica, filtra la lista de instancias devueltas que se crearon en o después de la marca de tiempo de ISO8601 especificada. |
createdTimeTo |
Cadena de consulta | Parámetro opcional. Cuando se especifica, filtra la lista de instancias devueltas que se crearon en o antes de la marca de tiempo de ISO8601 especificada. |
runtimeStatus |
Cadena de consulta | Parámetro opcional. Cuando se especifica, filtra la lista de instancias devueltas en función de su estado en tiempo de ejecución. Para ver la lista de posibles valores de estado en tiempo de ejecución, consulte el artículo Consultas de instancias . |
returnInternalServerErrorOnFailure |
Cadena de consulta | Parámetro opcional. Si se establece en , esta API devuelve una respuesta HTTP 500 en lugar de 200 si la instancia está en estado de error. Este parámetro está diseñado para escenarios de sondeo de estado automatizados. |
Respuesta
Se pueden devolver varios valores de código de estado posibles.
- HTTP 200 (OK): la instancia especificada está en estado completado o con errores.
- HTTP 202 (aceptado): la instancia especificada está en curso.
- HTTP 400 (solicitud incorrecta): se produjo un error en la instancia especificada o se finalizó.
- HTTP 404 (no encontrado): la instancia especificada no existe o no se ha iniciado la ejecución.
- HTTP 500 (error interno del servidor): solo se devuelve cuando se establece en y la instancia especificada produjo un error con una excepción no controlada.
La carga de respuesta para los casos HTTP 200 y HTTP 202 es un objeto JSON con los campos siguientes:
| Campo | Tipo de dato | Description |
|---|---|---|
runtimeStatus |
cuerda / cadena | Estado en tiempo de ejecución de la instancia. Los valores incluyen Ejecutando, Pendiente, Error, Cancelado, Terminado, Completado, Suspendido. |
input |
JSON | Datos JSON usados para inicializar la instancia. Este campo es si el parámetro de cadena de consulta se establece en . |
customStatus |
JSON | Los datos JSON usados para el estado personalizado de orquestación. Este campo es si no se establece. |
output |
JSON | Salida JSON de la instancia. Este campo es si la instancia no está en estado completado. |
createdTime |
cuerda / cadena | Hora en la que se creó la instancia. Usa notación extendida ISO 8601. |
lastUpdatedTime |
cuerda / cadena | Hora a la que se almacenó la instancia por última vez. Usa notación extendida ISO 8601. |
historyEvents |
JSON | Un array JSON que contiene el historial de ejecución de orquestación. Este campo es a menos que el parámetro de cadena de consulta esté establecido en . |
Este es un ejemplo de una carga de respuesta que incluye las salidas de historial de ejecución de orquestación y de actividad (a la que se ha aplicado formato para mejorar la legibilidad):
{
"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"
}
La respuesta HTTP 202 también incluye un encabezado de respuesta location que hace referencia a la misma dirección URL que el campo mencionado anteriormente.
Obtener el estado de todas las instancias
Consulta el estado de varias instancias de orquestación a la vez. Puede filtrar los resultados por estado, tiempo de creación y prefijo de identificador de instancia. Use esta operación para supervisar todas las orquestaciones activas o buscar instancias específicas.
Solicitud
Tiempo de ejecución de Functions 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 Functions 1.x (heredado):
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}
Los parámetros de solicitud para esta API incluyen el conjunto predeterminado mencionado anteriormente y los siguientes parámetros únicos:
| Campo | Tipo de parámetro | Description |
|---|---|---|
showInput |
Cadena de consulta | Parámetro opcional. Si se establece en , la entrada de la función no se incluye en la carga de respuesta. |
showHistoryOutput |
Cadena de consulta | Parámetro opcional. Si se establece en , incluye las salidas de la función en el historial de ejecución de orquestación. |
createdTimeFrom |
Cadena de consulta | Parámetro opcional. Cuando se especifica, filtra la lista de instancias devueltas que se crearon en o después de la marca de tiempo de ISO8601 especificada. |
createdTimeTo |
Cadena de consulta | Parámetro opcional. Cuando se especifica, filtra la lista de instancias devueltas que se crearon en o antes de la marca de tiempo de ISO8601 especificada. |
runtimeStatus |
Cadena de consulta | Parámetro opcional. Cuando se especifica, filtra la lista de instancias devueltas en función de su estado en tiempo de ejecución. Para ver la lista de posibles valores de estado en tiempo de ejecución, consulte el artículo Consultas de instancias . |
instanceIdPrefix |
Cadena de consulta | Parámetro opcional. Cuando se especifica, filtra la lista de instancias devueltas para incluir solo las instancias cuyo identificador de instancia comienza con la cadena de prefijo especificada. Disponible a partir de version 2.7.2 de la extensión. |
top |
Cadena de consulta | Parámetro opcional. Cuando se especifica, limita el número de instancias devueltas por la consulta. |
Respuesta
Este es un ejemplo de cargas de respuesta, incluido el estado de orquestación (con formato para mejorar la legibilidad):
[
{
"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"
}
]
Nota:
Esta operación puede ser costosa en términos de Azure Storage E/S si usa el proveedor Azure Storage y hay muchas filas en la tabla Instancias. Para obtener más información sobre la tabla Instances, consulte la documentación Azure Storage provider.
Si existen más resultados, se devuelve un token de continuación en el encabezado de respuesta. El nombre del encabezado es .
Precaución
El resultado de la consulta puede devolver menos elementos que el límite especificado por . Cuando reciba resultados, siempre debe comprobar si hay un token de continuación.
Si establece el valor del token de continuación en el siguiente encabezado de solicitud, puede obtener la siguiente página de resultados. El nombre del encabezado de solicitud también es .
Purgar el historial de instancias únicas
Elimina el historial y los artefactos relacionados de una instancia de orquestación especificada. Esta operación libera los recursos de almacenamiento y no se puede deshacer.
Solicitud
Tiempo de ejecución de Functions 2.x (recomendado):
DELETE /runtime/webhooks/durabletask/instances/{instanceId}
?taskHub={taskHub}
&connection={connection}
&code={systemKey}
Runtime de Functions 1.x (heredado):
DELETE /admin/extensions/DurableTaskExtension/instances/{instanceId}
?taskHub={taskHub}
&connection={connection}
&code={systemKey}
Los parámetros de solicitud para esta API incluyen el conjunto predeterminado mencionado anteriormente y los siguientes parámetros únicos:
| Campo | Tipo de parámetro | Description |
|---|---|---|
instanceId |
URL | Identificador de la instancia de orquestación. |
Respuesta
Se pueden devolver los siguientes valores de código de estado HTTP.
- HTTP 200 (OK): el historial de instancias se purgó correctamente.
- HTTP 404 (no encontrado): la instancia especificada no existe.
La carga de respuesta del caso HTTP 200 es un objeto JSON con el siguiente campo:
| Campo | Tipo de dato | Description |
|---|---|---|
instancesDeleted |
entero | Número de instancias eliminadas. Para el caso de instancia única, este valor siempre debe ser . |
Este es un ejemplo de contenido de respuesta (formateado para legibilidad):
{
"instancesDeleted": 1
}
Purgar varios historiales de instancias
Elimina el historial y los artefactos de varias instancias a la vez, filtrados por estado, tiempo de creación o prefijo de identificador de instancia. Úselo para limpiar de forma masiva las instancias antiguas y administrar los costos de almacenamiento.
Solicitud
Tiempo de ejecución de Functions 2.x (recomendado):
DELETE /runtime/webhooks/durabletask/instances
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
Runtime de Functions 1.x (heredado):
DELETE /admin/extensions/DurableTaskExtension/instances
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
Los parámetros de solicitud para esta API incluyen el conjunto predeterminado mencionado anteriormente y los siguientes parámetros únicos:
| Campo | Tipo de parámetro | Description |
|---|---|---|
createdTimeFrom |
Cadena de consulta | Filtra la lista de instancias purgadas que se crearon en o después de la marca de tiempo de ISO8601 especificada. |
createdTimeTo |
Cadena de consulta | Parámetro opcional. Cuando se especifica, filtra la lista de instancias purgadas que se crearon en o antes de la marca de tiempo de ISO8601 especificada. |
runtimeStatus |
Cadena de consulta | Parámetro opcional. Cuando se especifica, filtra la lista de instancias purgadas en función de su estado en tiempo de ejecución. Para ver la lista de posibles valores de estado en tiempo de ejecución, consulte el artículo Consultas de instancias . |
Nota:
Esta operación puede ser costosa en términos de Azure Storage E/S si usa el proveedor Azure Storage y hay muchas filas en las tablas Instances o History. Para obtener más información sobre estas tablas, consulte Performance and scale in Durable Functions (Azure Functions).
Respuesta
Se pueden devolver los siguientes valores de código de estado HTTP.
- HTTP 200 (OK): el historial de instancias se purgó correctamente.
- HTTP 404 (no encontrado): no se encontraron instancias que coincidan con la expresión de filtro.
La carga de respuesta del caso HTTP 200 es un objeto JSON con el siguiente campo:
| Campo | Tipo de dato | Description |
|---|---|---|
instancesDeleted |
entero | Número de instancias eliminadas. |
Este es un ejemplo de contenido de respuesta (formateado para legibilidad):
{
"instancesDeleted": 250
}
Generar evento
Envía un mensaje de notificación de evento a una instancia de orquestación en ejecución. La orquestación debe estar esperando este evento por nombre mediante o .
Solicitud
Tiempo de ejecución de Functions 2.x (recomendado):
POST /runtime/webhooks/durabletask/instances/{instanceId}/raiseEvent/{eventName}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Runtime de Functions 1.x (heredado):
POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/raiseEvent/{eventName}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Los parámetros de solicitud para esta API incluyen el conjunto predeterminado mencionado anteriormente y los siguientes parámetros únicos:
| Campo | Tipo de parámetro | Description |
|---|---|---|
instanceId |
URL | Identificador de la instancia de orquestación. |
eventName |
URL | Nombre del evento al que espera la instancia de orquestación de destino. |
{content} |
Solicitar contenido | Carga de eventos con formato JSON. |
Respuesta
Se pueden devolver varios valores de código de estado posibles.
- HTTP 202 (aceptado): se aceptó el evento generado para su procesamiento.
- HTTP 400 (solicitud incorrecta): el contenido de la solicitud no era de tipo o no era json válido.
- HTTP 404 (no encontrado): no se encontró la instancia especificada.
- HTTP 410 (Se ha ido): la instancia especificada se ha completado o ha producido un error y no puede procesar ningún evento generado.
Esta es una solicitud de ejemplo que envía la cadena JSON a una instancia que espera un evento llamado operación:
POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/raiseEvent/operation?taskHub=DurableFunctionsHub&connection=Storage&code=XXX
Content-Type: application/json
Content-Length: 6
"incr"
Las respuestas de esta API no contienen contenido.
Finalizar instancia
Finaliza una instancia de orquestación en ejecución.
Solicitud
Tiempo de ejecución de Functions 2.x (recomendado):
POST /runtime/webhooks/durabletask/instances/{instanceId}/terminate
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
Runtime de Functions 1.x (heredado):
POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/terminate
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
Los parámetros de solicitud para esta API incluyen el conjunto predeterminado mencionado anteriormente y el siguiente parámetro único.
| Campo | Tipo de parámetro | Description |
|---|---|---|
instanceId |
URL | Identificador de la instancia de orquestación. |
reason |
Cadena de consulta | Opcional. Motivo para finalizar la instancia de orquestación. |
Respuesta
Se pueden devolver varios valores de código de estado posibles.
- HTTP 202 (aceptado): se aceptó la solicitud de finalización para su procesamiento.
- HTTP 404 (no encontrado): no se encontró la instancia especificada.
- HTTP 410 (Desaparecido): la instancia especificada se ha completado o ha producido un error.
Esta es una solicitud de ejemplo que finaliza una instancia en ejecución y especifica un motivo de error:
POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/terminate?reason=buggy&taskHub=DurableFunctionsHub&connection=Storage&code=XXX
Las respuestas de esta API no contienen contenido.
Suspender instancia
Pausa una instancia de orquestación en ejecución sin terminarla. La instancia se puede reanudar más adelante mediante la operación .
Solicitud
En la versión 2.x del entorno de ejecución de Functions, la solicitud tiene el formato siguiente (se muestran varias líneas para mayor claridad):
POST /runtime/webhooks/durabletask/instances/{instanceId}/suspend
?reason={text}
&taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
| Campo | Tipo de parámetro | Description |
|---|---|---|
instanceId |
URL | Identificador de la instancia de orquestación. |
reason |
Cadena de consulta | Opcional. Motivo para suspender la instancia de orquestación. |
Respuesta
Se pueden devolver varios valores de código de estado posibles.
- HTTP 202 (aceptado): se aceptó la solicitud de suspensión para su procesamiento. No se devuelve ningún cuerpo de respuesta.
- HTTP 404 (no encontrado): no se encontró la instancia especificada.
- HTTP 410 (Desaparecido): la instancia especificada se ha completado, ha producido un error o ha finalizado y no se puede suspender.
Comprobación: Después de recibir HTTP 202, consulte el estado de la instancia mediante para comprobar que ha cambiado a .
Reanudación de la instancia
Reanuda la ejecución de una instancia de orquestación suspendida anteriormente.
Solicitud
En la versión 2.x del entorno de ejecución de Functions, la solicitud tiene el formato siguiente (se muestran varias líneas para mayor claridad):
POST /runtime/webhooks/durabletask/instances/{instanceId}/resume
?reason={text}
&taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
| Campo | Tipo de parámetro | Description |
|---|---|---|
instanceId |
URL | Identificador de la instancia de orquestación. |
reason |
Cadena de consulta | Opcional. Motivo para reanudar la instancia de orquestación. |
Respuesta
Se pueden devolver varios valores de código de estado posibles.
- HTTP 202 (aceptado): se aceptó la solicitud de reanudación para su procesamiento. No se devuelve ningún cuerpo de respuesta.
- HTTP 404 (no encontrado): no se encontró la instancia especificada.
- HTTP 410 (Se ha ido): la instancia especificada se ha completado, ha producido un error o ha finalizado y no se puede reanudar.
Comprobación: Después de recibir HTTP 202, consulte el estado de la instancia mediante para comprobar que ha cambiado a .
Rebobinado de instancias (versión preliminar)
Restaura una instancia de orquestación con errores a un estado operativo mediante la reproducción de las operaciones fallidas más recientes. Esta característica permite la recuperación de errores transitorios sin intervención manual.
Solicitud
Tiempo de ejecución de Functions 2.x (recomendado):
POST /runtime/webhooks/durabletask/instances/{instanceId}/rewind
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
Runtime de Functions 1.x (heredado):
POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/rewind
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
Los parámetros de solicitud para esta API incluyen el conjunto predeterminado mencionado anteriormente y el siguiente parámetro único.
| Campo | Tipo de parámetro | Description |
|---|---|---|
instanceId |
URL | Identificador de la instancia de orquestación. |
reason |
Cadena de consulta | Opcional. Motivo de reiniciar la instancia de orquestación. |
Respuesta
Se pueden devolver varios valores de código de estado posibles.
- HTTP 202 (aceptado) : se aceptó la solicitud de rebobinado para su procesamiento.
- HTTP 404 (no encontrado): no se encontró la instancia especificada.
- HTTP 410 (Desaparecido): la instancia especificada se ha completado o ha finalizado.
Esta es una solicitud de ejemplo que reinicia una instancia fallida y especifica un motivo de solucionado:
POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/rewind?reason=fixed&taskHub=DurableFunctionsHub&connection=Storage&code=XXX
Las respuestas de esta API no contienen contenido.
Entidad de señal
Envía un mensaje de operación unidireccional a una entidad durable. Si la entidad no existe, se crea automáticamente. Las operaciones de entidad se procesan de forma secuencial y duradera.
Nota:
Las entidades duraderas están disponibles a partir de Durable Functions 2.0.
Solicitud
La solicitud HTTP tiene el formato siguiente (se muestran varias líneas para mayor claridad):
POST /runtime/webhooks/durabletask/entities/{entityName}/{entityKey}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&op={operationName}
Los parámetros de solicitud para esta API incluyen el conjunto predeterminado mencionado anteriormente y los siguientes parámetros únicos:
| Campo | Tipo de parámetro | Description |
|---|---|---|
entityName |
URL | Nombre (tipo) de la entidad. |
entityKey |
URL | Clave (identificador único) de la entidad. |
op |
Cadena de consulta | Opcional. Nombre de la operación definida por el usuario que se va a invocar. |
{content} |
Solicitar contenido | Carga de eventos con formato JSON. |
Esta es una solicitud de ejemplo que envía un mensaje "Add" definido por el usuario a una entidad denominada . El contenido del mensaje es el valor . Si la entidad aún no existe, esta solicitud la crea:
POST /runtime/webhooks/durabletask/entities/Counter/steps?op=Add
Content-Type: application/json
5
Nota:
De forma predeterminada, con entidades basadas en clase en .NET, especificando el valor op de delete elimina el estado de una entidad. Sin embargo, si la entidad define una operación denominada , esa operación definida por el usuario se invoca en su lugar.
Respuesta
Esta operación tiene varias respuestas posibles:
- HTTP 202 (aceptado): la operación de señal se aceptó para el procesamiento asincrónico.
- HTTP 400 (solicitud incorrecta): el contenido de la solicitud no era de tipo , no era un JSON válido o tenía un valor no válido .
- HTTP 404 (no encontrado): no se encontró el especificado .
Una solicitud HTTP correcta no contiene ningún contenido en la respuesta. Una solicitud HTTP con error podría contener información de error con formato JSON en el contenido de la respuesta.
Obtener entidad
Obtiene el estado de la entidad especificada.
Solicitud
La solicitud HTTP tiene el formato siguiente (se muestran varias líneas para mayor claridad):
GET /runtime/webhooks/durabletask/entities/{entityName}/{entityKey}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Respuesta
Esta operación tiene dos respuestas posibles:
- HTTP 200 (OK):la entidad especificada existe.
- HTTP 404 (no encontrado): no se encontró la entidad especificada.
Una respuesta exitosa contiene el estado serializado JSON de la entidad como su contenido.
Example
Para obtener el estado de una entidad existente denominada :
GET /runtime/webhooks/durabletask/entities/Counter/steps
Si la entidad simplemente contenía una serie de pasos guardados en un campo, el contenido de la respuesta podría ser similar al siguiente (con formato de legibilidad):
{
"currentValue": 5
}
Enumerar entidades
Puede consultar varias entidades por el nombre de la entidad o por la fecha de la última operación.
Solicitud
La solicitud HTTP tiene el formato siguiente (se muestran varias líneas para mayor claridad):
GET /runtime/webhooks/durabletask/entities/{entityName}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&lastOperationTimeFrom={timestamp}
&lastOperationTimeTo={timestamp}
&fetchState=[true|false]
&top={integer}
Los parámetros de solicitud para esta API incluyen el conjunto predeterminado mencionado anteriormente y los siguientes parámetros únicos:
| Campo | Tipo de parámetro | Description |
|---|---|---|
entityName |
URL | Opcional. Cuando se especifica, filtra la lista de entidades devueltas por su nombre de entidad (sin distinción entre mayúsculas y minúsculas). |
fetchState |
Cadena de consulta | Parámetro opcional. Si se establece en , el estado de la entidad se incluye en la carga de respuesta. |
lastOperationTimeFrom |
Cadena de consulta | Parámetro opcional. Cuando se especifica, filtra la lista de entidades devueltas que procesaron las operaciones después de la marca de tiempo de ISO8601 especificada. |
lastOperationTimeTo |
Cadena de consulta | Parámetro opcional. Cuando se especifica, filtra la lista de entidades devueltas que procesaron las operaciones antes de la marca de tiempo de ISO8601 especificada. |
top |
Cadena de consulta | Parámetro opcional. Cuando se especifica, limita el número de entidades devueltas por la consulta. |
Respuesta
Una respuesta HTTP 200 correcta contiene una matriz serializada por JSON de entidades y, opcionalmente, el estado de cada entidad.
De forma predeterminada, la operación devuelve las primeras 100 entidades que coinciden con los criterios de consulta. El autor de la llamada puede especificar un valor de parámetro de cadena de consulta para que devuelva un número máximo diferente de resultados. Si existen más resultados más allá de lo que se devuelve, también se devuelve un token de continuación en el encabezado de respuesta. El nombre del encabezado es .
Si establece el valor del token de continuación en el siguiente encabezado de solicitud, puede obtener la siguiente página de resultados. El nombre del encabezado de solicitud también es .
Ejemplo: enumerar todas las entidades
Para enumerar todas las entidades del centro de tareas:
GET /runtime/webhooks/durabletask/entities
El JSON de respuesta podría tener el siguiente aspecto (con formato de legibilidad):
[
{
"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"
},
]
Ejemplo: filtrado de la lista de entidades
Para enumerar las dos primeras entidades y capturar su estado:
GET /runtime/webhooks/durabletask/entities/counter?top=2&fetchState=true
El JSON de respuesta podría tener el siguiente aspecto (con formato de legibilidad):
[
{
"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 }
}
]
Ejemplo de flujo de trabajo completo
En este ejemplo se muestra un ciclo de vida de orquestación completo mediante comandos. También puede usar Postman, Thunder Client o cualquier cliente HTTP.
1. Iniciar una orquestación
Iniciar una nueva orquestación con datos 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
}'
Respuesta (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"
}
Guarde el identificador de instancia:
2. Sondear el estado
Compruebe el progreso de la orquestación:
curl "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456?code=XXX"
Respuesta mientras se ejecuta (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"
}
Respuesta cuando se completa (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 un evento externo (opcional)
Si la orquestación está esperando aprobación, envíe un evento de aprobación:
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" }'
Respuesta: HTTP 202 (aceptado)
4. Limpieza del historial (opcional)
Una vez completada la orquestación, purga su historial:
curl -X DELETE "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456?code=XXX"
Respuesta (HTTP 200):
{
"instancesDeleted": 1
}
Pasos siguientes
Aprenda a usar Application Insights para supervisar las funciones duraderas