Skip to main content
GET
GetApprovalAPI mirrors erdo_get_approval: one request in full, the read a

Authorizations

Authorization
string
header
required

An Erdo API key (erdo_api_...) or scoped token (erdo_token_...).

Path Parameters

id
string
required

Response

Success response

action_context
string
action_display
string
action_headline
string
action_input
object
action_items
ApprovalActionItem is one exact action inside an approval, projected down to · object[]
action_key
string
agent_run_id
string<uuid>
card_contract_version
string

service from the stored row and the action registry, never by a consumer. See ApprovalCard for what each field promises; CardContractVersion is what a renderer keys its expectations on.

created_at
string<date-time>
decided_at
string<date-time>
decided_by_user_id
string<uuid>
decision_class
string
decision_parameter_constraints
object
decision_scope
string
expected_effect
ExpectedEffect is what the proposing producer said this change would move, · object

captured at filing from the call's expected_effect field and stored verbatim — the approval service never interprets it. The decision record turns it into a typed measurement contract when it records the decision this approval became; see ExpectedEffect for the declaration's shape.

Absent on most approvals, and honestly so: a change with no measurable business effect is better declaring nothing than inventing a metric.

expires_at
string<date-time>

report is moot the next day). nil is the default and the common case — an ask with no deadline never ages out; it resolves only when decided, superseded, or withdrawn.

first_proposed_at
string<date-time>
id
string<uuid>
job_execution_id
string<uuid>
job_id
string<uuid>
last_proposed_at
string<date-time>
occurrence_count
integer<int64>
omitted_items
integer<int64>
organization_id
string<uuid>
scope_options
ScopeOption is a pre-computed "always approve" option sent to the frontend. · object[]
status
string
subject_display_name
string
subject_key
string

deduplication. OccurrenceCount is how many times this exact action-on-subject has been proposed (1 = proposed once); when > 1 the UI shows "proposed Nx since <FirstProposedAt>". FirstProposedAt/LastProposedAt COALESCE to CreatedAt when the row predates dedupe tracking.

subject_resource_id
string
subject_resource_type
string

acts on (e.g. "artifact" + its id), when the action's registration declares one. They let a client resolve and render the actual subject — open/preview the page being published — instead of parsing a display string. Empty when the action carries no resolvable subject.

supersedes_decision_slug
string

this action would end, captured at filing from the call's supersedes_decision_slug field. Stored as its own column rather than left in action_input because the decision producer must read it after the human answers, and a re-proposal rewrites that blob wholesale.

Empty on almost every approval: most changes reverse nothing.

thread_id
string<uuid>
workstream_id
string<uuid>