Execution fields, statuses, stage records, filters, and control routes.
| Field | Meaning |
|---|---|
executionId | Stable Alfred execution identifier. |
workflow | Workflow name. |
principalId | Principal that submitted the request. |
status | Current execution status. |
currentStage | Active or last projected stage; nullable. |
createdAt | ISO 8601 acceptance time. |
finishedAt | ISO 8601 terminal time; nullable. |
cancellationRequestedAt | ISO 8601 time for cooperative cancellation; optional and nullable. |
inputJson | Validated workflow input. |
stages | Ordered durable stage projections. |
outcome | Normalized onboarding outcome when available. |
| Status | Terminal | Meaning |
|---|---|---|
queued | No | Accepted and waiting for dispatch or lane ownership. |
running | No | A workflow stage is active. |
waiting | No | Durably waiting for an external condition. |
paused | No | Paused at a workflow-owned approval or resume hook. |
succeeded | Yes | Required workflow contract completed. |
failed | Yes | Workflow or reconciliation failed. |
canceled | Yes | Execution was canceled. |
rolled_back | Yes | Compensation completed successfully. The execution cannot be retried. |
rolled_back is permanently terminal. Alfred preserves the execution as an
audit record and rejects retry controls. Replaying the execution's original
Idempotency-Key returns that record. A genuinely new delivery key for the
same logical request creates a new execution. Alfred retains predecessor
lineage internally; it does not reopen the rolled-back execution.
| Field | Meaning |
|---|---|
stageName | Stable workflow stage name. |
status | running, waiting, succeeded, or failed. |
startedAt | ISO 8601 start time. |
finishedAt | ISO 8601 completion time; nullable. |
outputJson | Durable output, including receipts when applicable. |
errorJson | Structured failure context. |
GET /v1/executions
GET /v1/executions/{id}
GET /v1/executions/{id}/eventsThe list route returns only workflows allowed by the principal's current
workflows:<name> permissions and supports:
| Query | Values |
|---|---|
limit | Integer 1-100; defaults to 50. |
workflow | Workflow name. |
status | Any execution status above. |
principalId | Exact stored principal ID. |
| Route | Accepted behavior |
|---|---|
POST /v1/executions/{id}/cancel | Cancels an eligible non-terminal execution, or records a cancellation request for a Lambda version update. Add-subdomain cannot be canceled after Route53 accepts its change. |
POST /v1/executions/{id}/resume | Continues a paused run that owns its active command lane, or retries an eligible failed/canceled update-lambda-version execution. Other failed/canceled workflows and rolled-back executions are rejected. |
POST /v1/executions/{id}/retry-finalization | Queues eligible certificate or onboarding finalization recovery. |
POST /v1/executions/{id}/retry-maps-whitelist | Queues Google Maps and completion recovery for an eligible successful onboarding execution. |
POST /v1/executions/{id}/rollback | Queues supported certificate/onboarding compensation or Lambda restoration. |
Each route requires the workflows:<name> permission for the execution's
workflow. Alfred does not expose a manual pause route. A workflow can still
wait durably for its own approval or an external condition.
| Route | Permission | Response |
|---|---|---|
GET /v1/executions/{id}/subdomain-plan | workflows:add-subdomain | Returns the persisted typed DNS plan. |
POST /v1/executions/{id}/subdomain-plan/approve | workflows:add-subdomain | Accepts { "planHash": "..." } for the currently waiting replacement plan. |
The plan identifies the hosted zone and apex alias and classifies each
hostname as create, already-correct, or replace. Replacement items also
contain the current record snapshot. Approval returns HTTP 202 when newly
accepted or safely replayed.
The plan routes use these errors:
| Status | Meaning |
|---|---|
400 | The approval body or plan hash is invalid. |
404 | The execution does not exist. |
409 | The workflow has no valid plan, is not awaiting this approval, or the supplied hash is stale. |
503 | Workflow approval controls are unavailable or the hook could not be resumed. |
Queued controls return HTTP 202 when accepted. Rollback can instead return
HTTP 200 when a failed or canceled execution has no source Workflow SDK run
and Alfred closes it synchronously as rolled_back. Continue observing every
queued control; acceptance does not imply a terminal outcome.
Cancellation of update-lambda-version is cooperative. Alfred records the
request, stops submitting later CloudFront batches, and observes every update
CloudFront already accepted before the execution becomes terminal. A successful
or otherwise terminal execution cannot be canceled. An accepted request
returns status: cancellation_requested; this is not a terminal execution
status.
POST /v1/executions/{id}/resume retries a failed or canceled Lambda version
update from its persisted input. It keeps the frozen plan and durable update
state, skips deployed and already-current distributions, and submits only
unfinished peers. It never retries forward after restoration has started.
An accepted retry returns status: retry_queued; an idempotent pending retry
returns status: retry_already_queued. Invalid persisted input or an
ineligible execution returns HTTP 409. Missing retry infrastructure returns
HTTP 501 workflow_retry_not_configured.
POST /v1/executions/{id}/rollback is available for a terminal Lambda version
update only when at least one durable receipt exists. It restores the exact
before-ARN recorded for each accepted association. If the current association
matches neither the before-ARN nor the rollout's after-ARN, restoration fails
with a conflict and leaves that association unchanged. Restoration progress is
reported through the original execution and its events.