Temporal é uma plataforma open-source de execução durável que permite às equipes escrever workflows como código capazes de sobreviver a falhas, retries e interrupções. Um cluster Temporal rastreia o estado e o histórico de eventos de cada execução de workflow, para que processos de negócio de longa duração — fulfillment de pedidos, pipelines de pagamento, provisionamento de infraestrutura, aprovações human-in-the-loop — rodem de forma confiável por minutos ou meses.
Com a integração do Temporal no Zoen, seus agentes podem conduzir esses workflows duráveis diretamente. Conecte-se a qualquer cluster Temporal que exponha a HTTP API do servidor (habilitada por padrão na porta HTTP do frontend, 7243, em servidores Temporal modernos) e:
- Executar workflows: inicie execuções com input JSON, use signal-with-start para entrega exactly-once e defina políticas de reuso de ID, cron schedules, timeouts, campos de memo e search attributes.
- Comunicar-se com workflows em execução: envie signals, invoque update handlers e aguarde seus resultados, e execute queries contra o estado ao vivo do workflow.
- Observar execuções: descreva uma execução (status, timing, atividades pendentes), liste e conte execuções com a linguagem de consulta de visibility do Temporal e obtenha históricos completos de eventos — inclusive só o close event para ler o resultado de um workflow.
- Operar a frota: cancele ou encerre execuções descontroladas, redefina um workflow para um ponto anterior no histórico e gerencie schedules — liste, descreva, pause, retome, dispare e exclua-os.
Inputs e resultados de workflows são codificados com o payload converter padrão json/plain do Temporal, então a integração interopera com workers escritos em qualquer Temporal SDK. Se o servidor tiver autenticação habilitada, forneça uma API key e o Zoen a envia como Bearer token em cada requisição.
Connect to a Temporal cluster over the server's HTTP API to start workflow executions, send signals, run queries against workflow state, describe and list executions, fetch event histories, and cancel or terminate running workflows. API key only required for servers with authentication enabled.
Start a new workflow execution on a Temporal cluster.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
workflowId | string | Yes | Unique workflow ID for the new execution (e.g., order-1234) |
workflowType | string | Yes | Registered workflow type name to run (e.g., OrderWorkflow) |
taskQueue | string | Yes | Task queue the workflow worker polls (e.g., orders) |
input | string | No | Workflow input as JSON. A top-level array is passed as the argument list (one argument per element); any other value is passed as a single argument |
workflowIdReusePolicy | string | No | Policy for reusing a closed workflow ID: WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE, WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY, WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE, or WORKFLOW_ID_REUSE_POLICY_TERMINATE_IF_RUNNING |
workflowIdConflictPolicy | string | No | Policy when a workflow with the same ID is already running: WORKFLOW_ID_CONFLICT_POLICY_FAIL, WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING, or WORKFLOW_ID_CONFLICT_POLICY_TERMINATE_EXISTING |
cronSchedule | string | No | Cron schedule for recurring executions (e.g., "0 12 * * *") |
executionTimeoutSeconds | number | No | Total workflow execution timeout in seconds, including retries and continue-as-new |
runTimeoutSeconds | number | No | Timeout for a single workflow run in seconds |
memo | string | No | JSON object of memo fields to attach to the execution |
searchAttributes | string | No | JSON object of search attribute values to index the execution with |
| Parameter | Type | Description |
|---|
workflowId | string | Workflow ID of the execution |
runId | string | Run ID of the started workflow execution |
started | boolean | Whether a new execution was started (false when an existing execution was reused) |
Send a signal to a running Temporal workflow execution.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
workflowId | string | Yes | Workflow ID of the execution to signal |
runId | string | No | Run ID of a specific run to signal (defaults to the latest run) |
signalName | string | Yes | Name of the signal handler to invoke (e.g., approve-order) |
signalInput | string | No | Signal input as JSON. A top-level array is passed as the argument list (one argument per element); any other value is passed as a single argument |
| Parameter | Type | Description |
|---|
workflowId | string | Workflow ID of the signaled execution |
signalName | string | Name of the signal that was sent |
Atomically signal a Temporal workflow, starting it first if it is not already running, so the signal is never lost.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
workflowId | string | Yes | Workflow ID to signal, or to start and signal (e.g., order-1234) |
workflowType | string | Yes | Registered workflow type name to start if the workflow is not running |
taskQueue | string | Yes | Task queue the workflow worker polls (e.g., orders) |
signalName | string | Yes | Name of the signal handler to invoke (e.g., approve-order) |
input | string | No | Workflow start input as JSON, used only when a new execution is started. A top-level array is passed as the argument list; any other value is passed as a single argument |
signalInput | string | No | Signal input as JSON. A top-level array is passed as the argument list (one argument per element); any other value is passed as a single argument |
workflowIdReusePolicy | string | No | Policy for reusing a closed workflow ID: WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE, WORKFLOW_ID_REUSE_POLICY_ALLOW_DUPLICATE_FAILED_ONLY, WORKFLOW_ID_REUSE_POLICY_REJECT_DUPLICATE, or WORKFLOW_ID_REUSE_POLICY_TERMINATE_IF_RUNNING |
workflowIdConflictPolicy | string | No | Policy when a workflow with the same ID is already running (defaults to using the existing run): WORKFLOW_ID_CONFLICT_POLICY_FAIL, WORKFLOW_ID_CONFLICT_POLICY_USE_EXISTING, or WORKFLOW_ID_CONFLICT_POLICY_TERMINATE_EXISTING |
cronSchedule | string | No | Cron schedule for recurring executions (e.g., "0 12 * * *") |
executionTimeoutSeconds | number | No | Total workflow execution timeout in seconds, including retries and continue-as-new |
runTimeoutSeconds | number | No | Timeout for a single workflow run in seconds |
memo | string | No | JSON object of memo fields to attach to the execution |
searchAttributes | string | No | JSON object of search attribute values to index the execution with |
| Parameter | Type | Description |
|---|
workflowId | string | Workflow ID of the signaled execution |
runId | string | Run ID of the signaled (or newly started) execution |
started | boolean | Whether this call started a new execution (false when only signaled) |
Run a synchronous query against the state of a Temporal workflow execution and return the result.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
workflowId | string | Yes | Workflow ID of the execution to query |
runId | string | No | Run ID of a specific run to query (defaults to the latest run) |
queryType | string | Yes | Name of the query handler to invoke (e.g., getStatus) |
queryArgs | string | No | Query arguments as JSON. A top-level array is passed as the argument list (one argument per element); any other value is passed as a single argument |
| Parameter | Type | Description |
|---|
workflowId | string | Workflow ID of the queried execution |
queryType | string | Name of the query that was run |
result | json | Decoded query result. A single payload is returned as its JSON value; multiple payloads are returned as an array |
Invoke an update handler on a running Temporal workflow and wait for its result. Unlike a signal, an update is validated by the workflow and returns a response.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
workflowId | string | Yes | Workflow ID of the execution to update |
runId | string | No | Run ID of a specific run to update (defaults to the latest run) |
updateName | string | Yes | Name of the update handler to invoke (e.g., addItem) |
updateArgs | string | No | Update arguments as JSON. A top-level array is passed as the argument list (one argument per element); any other value is passed as a single argument |
| Parameter | Type | Description |
|---|
workflowId | string | Workflow ID of the updated execution |
updateName | string | Name of the update that was invoked |
result | json | Decoded update result. A single payload is returned as its JSON value; multiple payloads are returned as an array |
Get the current state of a Temporal workflow execution, including status, timing, memo, search attributes, and pending activities.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
workflowId | string | Yes | Workflow ID of the execution to describe |
runId | string | No | Run ID of a specific run to describe (defaults to the latest run) |
| Parameter | Type | Description |
|---|
workflowId | string | Workflow ID of the execution |
runId | string | Run ID of the execution |
workflowType | string | Workflow type name |
status | string | Execution status (RUNNING, COMPLETED, FAILED, CANCELED, TERMINATED, CONTINUED_AS_NEW, or TIMED_OUT) |
startTime | string | Start time of the execution (RFC 3339) |
closeTime | string | Close time of the execution (RFC 3339), null while running |
executionTime | string | Effective execution start time (RFC 3339), e.g. the first cron run time |
historyLength | number | Number of events in the workflow history |
taskQueue | string | Task queue of the execution |
memo | json | Decoded memo fields attached to the execution |
searchAttributes | json | Decoded search attribute values |
pendingActivities | array | Activities currently pending on the execution |
↳ activityId | string | Activity ID |
↳ activityType | string | Activity type name |
↳ state | string | Pending state (SCHEDULED, STARTED, CANCEL_REQUESTED, PAUSED, or PAUSE_REQUESTED) |
↳ attempt | number | Current attempt number |
↳ lastFailureMessage | string | Message of the most recent failure, if the activity is retrying |
List workflow executions in a Temporal namespace, optionally filtered with a visibility query.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
query | string | No | Visibility list filter, e.g. WorkflowType = "OrderWorkflow" AND ExecutionStatus = "Running" (empty lists all executions) |
pageSize | number | No | Maximum number of executions to return per page |
nextPageToken | string | No | Page token from a previous response, for pagination |
| Parameter | Type | Description |
|---|
executions | array | Workflow executions matching the query |
↳ workflowId | string | Workflow ID of the execution |
↳ runId | string | Run ID of the execution |
↳ workflowType | string | Workflow type name |
↳ status | string | Execution status (RUNNING, COMPLETED, FAILED, CANCELED, TERMINATED, CONTINUED_AS_NEW, or TIMED_OUT) |
↳ startTime | string | Start time of the execution (RFC 3339) |
↳ closeTime | string | Close time of the execution (RFC 3339), null while running |
↳ executionTime | string | Effective execution start time (RFC 3339) |
↳ historyLength | number | Number of events in the workflow history |
↳ taskQueue | string | Task queue of the execution |
nextPageToken | string | Token for the next page of results, null when no more pages exist |
Count workflow executions in a Temporal namespace matching a visibility query, with optional GROUP BY aggregation.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
query | string | No | Visibility count filter, e.g. ExecutionStatus = "Running" or ... GROUP BY ExecutionStatus (empty counts all executions) |
| Parameter | Type | Description |
|---|
count | number | Number of workflow executions matching the query |
groups | array | Per-group counts when the query uses GROUP BY (empty otherwise) |
↳ values | json | Decoded values of the GROUP BY fields |
↳ count | number | Number of executions in the group |
Fetch the event history of a Temporal workflow execution, optionally filtered to just the close event.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
workflowId | string | Yes | Workflow ID of the execution |
runId | string | No | Run ID of a specific run (defaults to the latest run) |
maximumPageSize | number | No | Maximum number of history events to return per page |
nextPageToken | string | No | Page token from a previous response, for pagination |
historyEventFilterType | string | No | Event filter: HISTORY_EVENT_FILTER_TYPE_ALL_EVENT (default) or HISTORY_EVENT_FILTER_TYPE_CLOSE_EVENT to return only the final close event |
| Parameter | Type | Description |
|---|
events | array | History events of the workflow execution, in order |
↳ eventId | number | Sequential ID of the event |
↳ eventTime | string | Time the event was recorded (RFC 3339) |
↳ eventType | string | Event type (e.g., WORKFLOW_EXECUTION_STARTED, ACTIVITY_TASK_COMPLETED) |
↳ attributes | json | The event's type-specific attributes (payload data is base64-encoded) |
nextPageToken | string | Token for the next page of events, null when no more pages exist |
Request cooperative cancellation of a running Temporal workflow execution. The workflow decides how to respond to the request.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
workflowId | string | Yes | Workflow ID of the execution to cancel |
runId | string | No | Run ID of a specific run to cancel (defaults to the latest run) |
reason | string | No | Reason for the cancellation, recorded in the workflow history |
| Parameter | Type | Description |
|---|
workflowId | string | Workflow ID of the execution whose cancellation was requested |
Forcefully terminate a Temporal workflow execution immediately, without giving the workflow a chance to react.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
workflowId | string | Yes | Workflow ID of the execution to terminate |
runId | string | No | Run ID of a specific run to terminate (defaults to the latest run) |
reason | string | No | Reason for the termination, recorded in the workflow history |
| Parameter | Type | Description |
|---|
workflowId | string | Workflow ID of the terminated execution |
Reset a Temporal workflow execution to a past workflow task, terminating the current run and replaying from the reset point in a new run.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
workflowId | string | Yes | Workflow ID of the execution to reset |
runId | string | No | Run ID of a specific run to reset (defaults to the latest run) |
workflowTaskFinishEventId | number | Yes | Event ID of the workflow task finish event to reset to — a WORKFLOW_TASK_COMPLETED, WORKFLOW_TASK_TIMED_OUT, WORKFLOW_TASK_FAILED, or WORKFLOW_TASK_STARTED event (find it with Get Workflow History) |
reason | string | No | Reason for the reset, recorded in the workflow history |
| Parameter | Type | Description |
|---|
workflowId | string | Workflow ID of the reset execution |
runId | string | Run ID of the new run created by the reset |
List the workers currently polling a Temporal task queue, to check whether a workflow or activity has live workers.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
taskQueue | string | Yes | Name of the task queue to describe (e.g., orders) |
taskQueueType | string | No | Type of pollers to list: TASK_QUEUE_TYPE_WORKFLOW (default) or TASK_QUEUE_TYPE_ACTIVITY |
| Parameter | Type | Description |
|---|
taskQueue | string | Name of the described task queue |
pollers | array | Workers currently polling the task queue (empty when no workers are running) |
↳ identity | string | Identity of the polling worker |
↳ lastAccessTime | string | Last time the worker polled the queue (RFC 3339) |
↳ ratePerSecond | number | Poller rate per second |
Create a Temporal schedule that starts a workflow on a cron or interval cadence.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
scheduleId | string | Yes | Unique ID for the new schedule (e.g., nightly-report) |
workflowId | string | Yes | Workflow ID for started workflows (the schedule appends the run time to keep IDs unique) |
workflowType | string | Yes | Registered workflow type name the schedule starts (e.g., ReportWorkflow) |
taskQueue | string | Yes | Task queue the workflow worker polls (e.g., reports) |
input | string | No | Workflow input as JSON. A top-level array is passed as the argument list (one argument per element); any other value is passed as a single argument |
cronExpressions | string | No | Cron expressions defining when the schedule fires, comma- or newline-separated for multiple (e.g., "0 12 * * *"). At least one of cronExpressions or intervalSeconds is required |
intervalSeconds | number | No | Fixed interval between actions in seconds. At least one of cronExpressions or intervalSeconds is required |
timezone | string | No | IANA time zone for cron evaluation (e.g., America/New_York; defaults to UTC) |
overlapPolicy | string | No | Policy when an action would overlap a still-running one (defaults to skip): SCHEDULE_OVERLAP_POLICY_SKIP, SCHEDULE_OVERLAP_POLICY_BUFFER_ONE, SCHEDULE_OVERLAP_POLICY_BUFFER_ALL, SCHEDULE_OVERLAP_POLICY_CANCEL_OTHER, SCHEDULE_OVERLAP_POLICY_TERMINATE_OTHER, or SCHEDULE_OVERLAP_POLICY_ALLOW_ALL |
notes | string | No | Human-readable notes stored on the schedule |
paused | boolean | No | Create the schedule in a paused state (defaults to active) |
| Parameter | Type | Description |
|---|
scheduleId | string | ID of the created schedule |
List schedules in a Temporal namespace.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
query | string | No | Visibility filter over schedules, e.g. TemporalSchedulePaused = false (empty lists all schedules) |
maximumPageSize | number | No | Maximum number of schedules to return per page |
nextPageToken | string | No | Page token from a previous response, for pagination |
| Parameter | Type | Description |
|---|
schedules | array | Schedules in the namespace |
↳ scheduleId | string | Schedule ID |
↳ workflowType | string | Workflow type the schedule starts |
↳ paused | boolean | Whether the schedule is paused |
↳ notes | string | Human-readable notes on the schedule |
↳ futureActionTimes | json | Upcoming action times (RFC 3339) |
nextPageToken | string | Token for the next page of results, null when no more pages exist |
Get the configuration and current state of a Temporal schedule, including its spec, recent actions, and upcoming run times.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
scheduleId | string | Yes | ID of the schedule to describe |
| Parameter | Type | Description |
|---|
scheduleId | string | Schedule ID |
paused | boolean | Whether the schedule is paused |
notes | string | Human-readable notes on the schedule |
workflowType | string | Workflow type the schedule starts |
taskQueue | string | Task queue used for started workflows |
workflowId | string | Workflow ID template for started workflows |
spec | json | Schedule spec (calendars, intervals, cron strings, jitter, time zone) |
recentActions | array | Most recent actions taken by the schedule |
↳ scheduleTime | string | Nominal scheduled time (RFC 3339) |
↳ actualTime | string | Actual time the action ran (RFC 3339) |
↳ workflowId | string | Workflow ID of the started execution |
↳ runId | string | Run ID of the started execution |
futureActionTimes | json | Upcoming action times (RFC 3339) |
Pause a Temporal schedule so it stops taking actions until unpaused.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
scheduleId | string | Yes | ID of the schedule to pause |
reason | string | No | Reason recorded in the schedule's notes |
| Parameter | Type | Description |
|---|
scheduleId | string | ID of the paused schedule |
Unpause a Temporal schedule so it resumes taking actions.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
scheduleId | string | Yes | ID of the schedule to unpause |
reason | string | No | Reason recorded in the schedule's notes |
| Parameter | Type | Description |
|---|
scheduleId | string | ID of the unpaused schedule |
Trigger an immediate action of a Temporal schedule, outside its normal spec.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
scheduleId | string | Yes | ID of the schedule to trigger |
overlapPolicy | string | No | Overlap policy for the triggered action (defaults to the schedule's policy): SCHEDULE_OVERLAP_POLICY_SKIP, SCHEDULE_OVERLAP_POLICY_BUFFER_ONE, SCHEDULE_OVERLAP_POLICY_BUFFER_ALL, SCHEDULE_OVERLAP_POLICY_CANCEL_OTHER, SCHEDULE_OVERLAP_POLICY_TERMINATE_OTHER, or SCHEDULE_OVERLAP_POLICY_ALLOW_ALL |
| Parameter | Type | Description |
|---|
scheduleId | string | ID of the triggered schedule |
Delete a Temporal schedule. Workflows already started by the schedule keep running.
| Parameter | Type | Required | Description |
|---|
serverUrl | string | Yes | Base URL of the Temporal server's HTTP API (e.g., http://localhost:7243\) |
namespace | string | Yes | Temporal namespace (e.g., default) |
apiKey | string | No | API key sent as a Bearer token (leave blank for servers without auth) |
scheduleId | string | Yes | ID of the schedule to delete |
| Parameter | Type | Description |
|---|
scheduleId | string | ID of the deleted schedule |