Skip to content

Read Workflow definition

GET
/v1/object-types/hospitality.workflow_definition/objects/{id}
curl --request GET \
--url https://api.aerandil.com/v1/object-types/hospitality.workflow_definition/objects/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'Authorization: Bearer <token>'

Read an existing instance.

Versioned, declarative workflow template. A definition pins step graph, schemas, retry/timeout/compensation policies, and the definition_hash over the canonical JSON form so every run can prove what shape it executes. After status = active all step/schema/policy fields are immutable; changes create a new version (proposal 0020 §4.1).

id
required
string format: uuid

Object id (UUID v7, server-generated at create time).

branch
string format: uuid

Read through an open branch’s copy-on-first-write overlay view instead of the canonical (main) plane. Does not compose with as_of (422). The branch must exist under the caller’s tenant.

Object found.

Media typeapplication/json
object
created_at
required
string format: date-time
id
required
string format: uuid
object_type
required
Allowed value: hospitality.workflow_definition
properties
required
object
changelog_note
Human explanation for active/deprecated versions
string
compensation_policy
required
How the definition handles compensation after a failed terminal run
string
Allowed values: none best_effort required_for_side_effects manual_only
default_retry_policy
Default retry settings inherited by steps unless overridden
definition_hash
required
SHA-256 over canonical JSON of the definition. Runs pin this value.
string
deprecated_at
Set when status becomes deprecated
string format: date-time
description
Bounded to 2048 characters
string
high_risk_policy
required
How the definition treats steps with high `risk_tier`
string
Allowed values: forbid_auto_apply require_gate allow_with_policy
id
required
Definition id
string
input_schema
required
JSON-Schema-shaped typed parameter contract for `start_workflow_run`
output_schema
JSON-Schema-shaped result contract for completed runs
owner_principal
`Principal::stable_id()` of the maintainer / service owning the definition
string
published_at
Set when draft becomes active
string format: date-time
status
required
Lifecycle status
string
Allowed values: draft active deprecated retired
step_definitions
required
Ordered step definitions per §4.1.1. Stored as JSON for v1 — the typed step-definition shape (step_key, step_type, depends_on, action_name, parameter_template, idempotency_scope, retry_policy, compensation, approval_policy, wait_policy, branch_policy, subworkflow_ref, external_task_kind, executor_policy, risk_tier) is enforced by the workflow_definition validators in commit 9.
timeout_policy
Run-level timeout / expiry settings
title
required
Human-readable name
string
trigger_kind
required
What kind of caller starts runs of this definition
string
Allowed values: manual event schedule webhook agent_requested api
version
required
Operator-controlled semantic version or date. Immutable after activation.
string
workflow_key
required
Stable key under the tenant namespace (e.g. `late_checkout_exception`)
string
provenance

Per-property source attribution and pins. An entry under properties means the property’s current value came from that source (on the source’s own clock, source_updated_at); an entry under pins is a human override protecting the property from sourced writes.

object
pins
object
key
additional properties
object
pinned_at
string format: date-time
pinned_by
object
reason
required
string
properties
object
key
additional properties
object
external_id
string
recorded_at
required
string format: date-time
source
required
string
source_updated_at
string format: date-time
stream
string
scope
required
One of: discriminator: level
object
level
required
string
Allowed value: tenant
Allowed values: tenant
tenant_id
required
string format: uuid
updated_at
required
string format: date-time
version
required
integer
>= 1
Example
{
"object_type": "hospitality.workflow_definition",
"properties": {
"compensation_policy": "none",
"high_risk_policy": "forbid_auto_apply",
"status": "draft",
"trigger_kind": "manual"
},
"scope": {
"level": "tenant"
}
}
ETag
string
/^"\d+"$/

Quoted strong validator (RFC 7232 §2.3) carrying the object’s monotonic version. Informational on the read path — object mutation goes through typed actions on /v1/actions/{action}/apply, not raw CRUD.

No object with that id (or soft-deleted).