Compartir vía


Referencia de la API HTTP

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:

    1. Abrir la aplicación de funciones
    2. Seleccione Funciones → Claves de aplicación en el menú de la izquierda.
    3. En la sección Claves del sistema , busque la clave (normalmente generada automáticamente para la extensión)
    4. 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:

  1. Iniciar la orquestación → → Devuelve el identificador de instancia y la dirección URL de estado
  2. Comprobación del estado → → Supervisar el progreso
  3. Enviar evento (opcional) → → Enviar señales externas
  4. 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