Open source / Rust / MIT Field guide / indexed
Field guide / Requests APIReviewable source / main

Requests API

The governed request lifecycle: create and track requests, validate, plan, approve or reject, execute, verify, cancel, and batch equivalents, with per-request audit trails, approval ledgers, and evidence packs.

34 routes

Response metadata: x-api-version, x-request-id, and traceresponse apply to normal routed responses and are omitted from the per-operation header tables below.

GET/api/requests

request access

Returns a backward-compatible bare request-summary array.

include_total defaults to false; when true, X-Total-Count is returned if the tightly budgeted capped aggregate completes, otherwise X-Total-Count-Unavailable: true is returned. X-Total-Count-Capped: true marks the navigation ceiling. X-Next-Cursor is emitted only when another deterministic (created_at, id) page exists.

Permissions

Access classCredentialScoping
requestAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests

Path parameters

This operation has no path parameters.

Query parameters

NameTypeRequirementDescription
limitintegerOptionalMaximum number of results requested.
offsetintegerOptionalNumber of results to skip before returning the page.
include_totalbooleanOptionalExact/capped totals are an explicit compatibility opt-in. When omitted or false, no count query runs and no total-count headers are returned.
cursorstringOptionalOpaque continuation for deterministic (created_at, id) traversal. Numeric offset remains available inside its bounded compatibility window.
statusstringOptionalValue supplied for the status query parameter.
sitestringOptionalSite identifier used to scope or filter the operation.
environmentstringOptionalEnvironment identifier used to scope or filter the operation.
request_typestringOptionalValue supplied for the request_type query parameter.
created_bystringOptionalValue supplied for the created_by query parameter.
qstringOptionalCase-insensitive substring on the request name.
sortstringOptionalField or expression used to order results.
directionstringOptionalDirection used to order results.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

200 response headers

NameTypeRequirementDescription
X-Total-CountintegerOptionalFiltered, capped total; present only when include_total=true and the aggregate finishes within its statement budget.
X-Total-Count-CappedbooleanOptionalTrue when X-Total-Count reached the supported request-list navigation ceiling.
X-Total-Count-UnavailablebooleanOptionalTrue when include_total=true but the optional aggregate exceeded its statement budget; the bounded page is still returned.
X-Next-CursorstringOptionalOpaque continuation emitted only when another deterministic request-list page exists.

Returns a bare JSON array; include_total defaults to false, so total-count headers are conditional, and X-Next-Cursor is emitted only when another deterministic page exists.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests'

POST/api/requests

request access

Create requests.

Permissions

Access classCredentialScoping
requestAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests

Path parameters

This operation has no path parameters.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
Content-TypestringRequiredRequired by the resolved Axum Json<T> request extractor; send application/json.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

JSON structure: CreateRequest.

NameTypeRequirementDescription
request_typestringRequiredValue of request_type in the JSON request body.
sitestringRequiredSite code targeted by the request.
environmentstringRequiredEnvironment targeted by the request.
namestringRequiredClient-supplied name for the resource or operation.
cpuintegerOptionalValue of cpu in the JSON request body.
memory_gbintegerOptionalValue of memory_gb in the JSON request body.
justificationstringRequiredValue of justification in the JSON request body.
fieldsobject<string, string>OptionalValue of fields in the JSON request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '{"request_type":"<string>","site":"<string>","environment":"<string>","name":"<string>","justification":"<string>"}' \
  'https://<your-host>/api/requests'

POST/api/requests/batch/approve

approve access

Record THIS approver's sign-off on up to 100 requests in one call (#17, final slice).

Each id goes through the SAME approve_one quorum/SoD core as a single approve, so a batch CANNOT bypass the multi-role quorum: a required_approval_roles > 1 request gets this approver's ONE decision and stays Planned (quorum_met=false) until N distinct roles + approvers approve. Items are independent; partial success is normal; HTTP 200 always (clients MUST inspect each result's ok/quorum_met). Duplicate ids are deduped.

approve is a FLAT capability, checked ONCE up front: a caller lacking it gets a single 403 for the WHOLE batch, audited EXACTLY ONCE with the non-id "batch" sentinel. check_sod (approver != creator) stays the PER-ITEM gate inside approve_one, so approving a request you created fails only that id.

Permissions

Access classCredentialScoping
approveAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/batch/approve

Path parameters

This operation has no path parameters.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
Content-TypestringRequiredRequired by the resolved Axum Json<T> request extractor; send application/json.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

JSON structure: BatchApproveRequest.

NameTypeRequirementDescription
idsarray<string>RequiredValue of ids in the JSON request body.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
resultsJSON valueRequiredResults returned by this operation.
succeededJSON valueRequiredValue of succeeded returned in the response body.
failedJSON valueRequiredValue of failed returned in the response body.
approvedJSON valueRequiredValue of approved returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '{"ids":[]}' \
  'https://<your-host>/api/requests/batch/approve'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "results": null,
  "succeeded": null,
  "failed": null,
  "approved": null
}

POST/api/requests/batch/cancel

request access

Cancel up to 100 requests in one call (#17).

Each id is cancelled INDEPENDENTLY through the same cancel_one core (so the SoD rule and the per-item transaction are identical to a single cancel); partial success is normal and the response reports a per-id outcome. Items are NOT atomic with each other — a failure on one does not roll back the rest. NOTE: even an all-failed batch returns HTTP 200; clients MUST inspect failed/results. Duplicate ids are deduped (each request is acted on once).

Permissions

Access classCredentialScoping
requestAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/batch/cancel

Path parameters

This operation has no path parameters.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
Content-TypestringRequiredRequired by the resolved Axum Json<T> request extractor; send application/json.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

JSON structure: BatchCancelRequest.

NameTypeRequirementDescription
idsarray<string>RequiredValue of ids in the JSON request body.
reasonstringRequiredHuman-readable reason recorded with the operation and its audit trail.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
resultsJSON valueRequiredResults returned by this operation.
succeededJSON valueRequiredValue of succeeded returned in the response body.
failedJSON valueRequiredValue of failed returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '{"ids":[],"reason":"<string>"}' \
  'https://<your-host>/api/requests/batch/cancel'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "results": null,
  "succeeded": null,
  "failed": null
}

POST/api/requests/batch/fail

execute access

Terminally fail up to 100 requests in one call (#17, slice 3).

Each id is failed INDEPENDENTLY through the same fail_one core (so the scope rule, the per-item transaction, AND the fails-at-its-current-stage behavior are identical to a single fail); partial success is normal and the response reports a per-id outcome. Items are NOT atomic with each other. Even an all-failed batch returns HTTP 200; clients MUST inspect failed/results. Duplicate ids are deduped.

execute is a FLAT capability, checked ONCE up front: a caller lacking it gets a single 403 for the WHOLE batch, audited EXACTLY ONCE with a non-id "batch" sentinel.

Permissions

Access classCredentialScoping
executeAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/batch/fail

Path parameters

This operation has no path parameters.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
Content-TypestringRequiredRequired by the resolved Axum Json<T> request extractor; send application/json.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

JSON structure: BatchFailRequest.

NameTypeRequirementDescription
idsarray<string>RequiredValue of ids in the JSON request body.
reasonstringRequiredHuman-readable reason recorded with the operation and its audit trail.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
resultsJSON valueRequiredResults returned by this operation.
succeededJSON valueRequiredValue of succeeded returned in the response body.
failedJSON valueRequiredValue of failed returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '{"ids":[],"reason":"<string>"}' \
  'https://<your-host>/api/requests/batch/fail'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "results": null,
  "succeeded": null,
  "failed": null
}

POST/api/requests/batch/reject

approve access

Reject up to 100 requests in one call (#17, slice 2).

Each id is rejected INDEPENDENTLY through the same reject_one core (so the scope/SoD rule and the per-item transaction are identical to a single reject); partial success is normal and the response reports a per-id outcome. Items are NOT atomic with each other — a failure on one does not roll back the rest. NOTE: even an all-failed batch returns HTTP 200; clients MUST inspect failed/results. Duplicate ids are deduped (each request is acted on once).

The approve capability is a FLAT capability, so it is checked ONCE up front: a caller lacking it gets a single 403 for the WHOLE batch (never per-item), audited EXACTLY ONCE with a non-id sentinel — looping the ids would be wasteful and risk an existence oracle on a denied caller. check_sod (creator != approver) remains the per-item gate inside reject_one.

Permissions

Access classCredentialScoping
approveAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/batch/reject

Path parameters

This operation has no path parameters.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
Content-TypestringRequiredRequired by the resolved Axum Json<T> request extractor; send application/json.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

JSON structure: BatchRejectRequest.

NameTypeRequirementDescription
idsarray<string>RequiredValue of ids in the JSON request body.
reasonstringRequiredHuman-readable reason recorded with the operation and its audit trail.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
resultsJSON valueRequiredResults returned by this operation.
succeededJSON valueRequiredValue of succeeded returned in the response body.
failedJSON valueRequiredValue of failed returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '{"ids":[],"reason":"<string>"}' \
  'https://<your-host>/api/requests/batch/reject'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "results": null,
  "succeeded": null,
  "failed": null
}

POST/api/requests/batch/rework

approve access

Send up to 100 requests back to Intake in one call (#17, slice 3).

Each id is reworked INDEPENDENTLY through the same rework_one core (so the scope rule and per-item transaction are identical to a single rework); partial success is normal and the response reports a per-id outcome. Items are NOT atomic with each other. Even an all-failed batch returns HTTP 200; clients MUST inspect failed/results. Duplicate ids are deduped.

approve is a FLAT capability, checked ONCE up front: a caller lacking it gets a single 403 for the WHOLE batch, audited EXACTLY ONCE with a non-id "batch" sentinel (looping the ids would be wasteful and risk an existence oracle on a denied caller). rework has no SoD gate (matching the single handler).

Permissions

Access classCredentialScoping
approveAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/batch/rework

Path parameters

This operation has no path parameters.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
Content-TypestringRequiredRequired by the resolved Axum Json<T> request extractor; send application/json.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

JSON structure: BatchReworkRequest.

NameTypeRequirementDescription
idsarray<string>RequiredValue of ids in the JSON request body.
reasonstringRequiredHuman-readable reason recorded with the operation and its audit trail.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
resultsJSON valueRequiredResults returned by this operation.
succeededJSON valueRequiredValue of succeeded returned in the response body.
failedJSON valueRequiredValue of failed returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '{"ids":[],"reason":"<string>"}' \
  'https://<your-host>/api/requests/batch/rework'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "results": null,
  "succeeded": null,
  "failed": null
}

GET/api/requests/execution-timeline-contract

request access

Requests execution timeline.

Permissions

Access classCredentialScoping
requestAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests/execution-timeline-contract

Path parameters

This operation has no path parameters.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
sourcestringRequiredOrigin or authority of the returned data.
requestTimelineModestringRequiredValue of requestTimelineMode returned in the response body.
timelineReadOnlybooleanRequiredValue of timelineReadOnly returned in the response body.
evidenceReferencesReadOnlybooleanRequiredValue of evidenceReferencesReadOnly returned in the response body.
operationLinksReadOnlybooleanRequiredValue of operationLinksReadOnly returned in the response body.
liveRequestQueryAllowedbooleanRequiredValue of liveRequestQueryAllowed returned in the response body.
requestMutationAllowedbooleanRequiredValue of requestMutationAllowed returned in the response body.
workflowMutationAllowedbooleanRequiredValue of workflowMutationAllowed returned in the response body.
operationMutationAllowedbooleanRequiredValue of operationMutationAllowed returned in the response body.
providerCallsAllowedbooleanRequiredValue of providerCallsAllowed returned in the response body.
notificationDispatchAllowedbooleanRequiredValue of notificationDispatchAllowed returned in the response body.
rawRequestPayloadsAllowedbooleanRequiredValue of rawRequestPayloadsAllowed returned in the response body.
rawTimelineRowsAllowedbooleanRequiredValue of rawTimelineRowsAllowed returned in the response body.
rawApprovalDataAllowedbooleanRequiredValue of rawApprovalDataAllowed returned in the response body.
rawOperationRowsAllowedbooleanRequiredValue of rawOperationRowsAllowed returned in the response body.
rawEvidencePayloadsAllowedbooleanRequiredValue of rawEvidencePayloadsAllowed returned in the response body.
rawProviderPayloadsAllowedbooleanRequiredValue of rawProviderPayloadsAllowed returned in the response body.
rawLogContentAllowedbooleanRequiredValue of rawLogContentAllowed returned in the response body.
rawRecipientDataAllowedbooleanRequiredValue of rawRecipientDataAllowed returned in the response body.
credentialValuesAllowedbooleanRequiredValue of credentialValuesAllowed returned in the response body.
tokenValuesAllowedbooleanRequiredValue of tokenValuesAllowed returned in the response body.
tenantIdentifiersAllowedbooleanRequiredValue of tenantIdentifiersAllowed returned in the response body.
objectIdentifiersAllowedbooleanRequiredValue of objectIdentifiersAllowed returned in the response body.
principalIdentifiersAllowedbooleanRequiredValue of principalIdentifiersAllowed returned in the response body.
privateNetworkValuesAllowedbooleanRequiredValue of privateNetworkValuesAllowed returned in the response body.
timelineStagesJSON valueRequiredValue of timelineStages returned in the response body.
timelineEventTypesJSON valueRequiredValue of timelineEventTypes returned in the response body.
evidenceStatesJSON valueRequiredValue of evidenceStates returned in the response body.
timelineViewsJSON valueRequiredValue of timelineViews returned in the response body.
requiredGuardsJSON valueRequiredValue of requiredGuards returned in the response body.
blockedReasonsJSON valueRequiredValue of blockedReasons returned in the response body.
requiredEvidencearray<JSON value>RequiredValue of requiredEvidence returned in the response body.
rulesarray<JSON value>RequiredValue of rules returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests/execution-timeline-contract'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "source": "<string>",
  "requestTimelineMode": "<string>",
  "timelineReadOnly": false,
  "evidenceReferencesReadOnly": false,
  "operationLinksReadOnly": false,
  "liveRequestQueryAllowed": false,
  "requestMutationAllowed": false,
  "workflowMutationAllowed": false,
  "operationMutationAllowed": false,
  "providerCallsAllowed": false,
  "notificationDispatchAllowed": false,
  "rawRequestPayloadsAllowed": false,
  "rawTimelineRowsAllowed": false,
  "rawApprovalDataAllowed": false,
  "rawOperationRowsAllowed": false,
  "rawEvidencePayloadsAllowed": false,
  "rawProviderPayloadsAllowed": false,
  "rawLogContentAllowed": false,
  "rawRecipientDataAllowed": false,
  "credentialValuesAllowed": false,
  "tokenValuesAllowed": false,
  "tenantIdentifiersAllowed": false,
  "objectIdentifiersAllowed": false,
  "principalIdentifiersAllowed": false,
  "privateNetworkValuesAllowed": false,
  "timelineStages": null,
  "timelineEventTypes": null,
  "evidenceStates": null,
  "timelineViews": null,
  "requiredGuards": null,
  "blockedReasons": null,
  "requiredEvidence": [],
  "rules": []
}

GET/api/requests/intake-form

request access

Requests intake form.

Permissions

Access classCredentialScoping
requestAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests/intake-form

Path parameters

This operation has no path parameters.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
titlestringRequiredValue of title returned in the response body.
descriptionstringRequiredValue of description returned in the response body.
sourcestringRequiredOrigin or authority of the returned data.
formModestringRequiredValue of formMode returned in the response body.
formSubmissionAllowedbooleanRequiredValue of formSubmissionAllowed returned in the response body.
liveRequestCreationAllowedbooleanRequiredValue of liveRequestCreationAllowed returned in the response body.
inputKindsarray<JSON value>RequiredValue of inputKinds returned in the response body.
fieldsarray<JSON value>RequiredValue of fields returned in the response body.
blockedReasonsarray<JSON value>RequiredValue of blockedReasons returned in the response body.
requiredEvidencearray<JSON value>RequiredValue of requiredEvidence returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests/intake-form'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "title": "<string>",
  "description": "<string>",
  "source": "<string>",
  "formMode": "<string>",
  "formSubmissionAllowed": false,
  "liveRequestCreationAllowed": false,
  "inputKinds": [],
  "fields": [],
  "blockedReasons": [],
  "requiredEvidence": []
}

GET/api/requests/intake-support-contract

request access

Requests intake support.

Permissions

Access classCredentialScoping
requestAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests/intake-support-contract

Path parameters

This operation has no path parameters.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
sourcestringRequiredOrigin or authority of the returned data.
intakeSupportModestringRequiredValue of intakeSupportMode returned in the response body.
templateCatalogReadOnlybooleanRequiredValue of templateCatalogReadOnly returned in the response body.
duplicateDetectionDryRunOnlybooleanRequiredValue of duplicateDetectionDryRunOnly returned in the response body.
draftStateReadOnlybooleanRequiredValue of draftStateReadOnly returned in the response body.
liveSubmissionAllowedbooleanRequiredValue of liveSubmissionAllowed returned in the response body.
draftPersistenceAllowedbooleanRequiredValue of draftPersistenceAllowed returned in the response body.
duplicateQueryAllowedbooleanRequiredValue of duplicateQueryAllowed returned in the response body.
workflowMutationAllowedbooleanRequiredValue of workflowMutationAllowed returned in the response body.
approvalMutationAllowedbooleanRequiredValue of approvalMutationAllowed returned in the response body.
providerCallsAllowedbooleanRequiredValue of providerCallsAllowed returned in the response body.
rawRequestPayloadsAllowedbooleanRequiredValue of rawRequestPayloadsAllowed returned in the response body.
rawDraftPayloadsAllowedbooleanRequiredValue of rawDraftPayloadsAllowed returned in the response body.
rawDuplicateRowsAllowedbooleanRequiredValue of rawDuplicateRowsAllowed returned in the response body.
rawProviderPayloadsAllowedbooleanRequiredValue of rawProviderPayloadsAllowed returned in the response body.
rawLogContentAllowedbooleanRequiredValue of rawLogContentAllowed returned in the response body.
rawRowsAllowedbooleanRequiredValue of rawRowsAllowed returned in the response body.
rawRecipientDataAllowedbooleanRequiredValue of rawRecipientDataAllowed returned in the response body.
credentialValuesAllowedbooleanRequiredValue of credentialValuesAllowed returned in the response body.
tenantIdentifiersAllowedbooleanRequiredValue of tenantIdentifiersAllowed returned in the response body.
objectIdentifiersAllowedbooleanRequiredValue of objectIdentifiersAllowed returned in the response body.
privateNetworkValuesAllowedbooleanRequiredValue of privateNetworkValuesAllowed returned in the response body.
supportSurfacesarray<JSON value>RequiredValue of supportSurfaces returned in the response body.
templateTypesarray<JSON value>RequiredValue of templateTypes returned in the response body.
duplicateSignalsarray<JSON value>RequiredValue of duplicateSignals returned in the response body.
draftStatesarray<JSON value>RequiredValue of draftStates returned in the response body.
requiredGuardsarray<JSON value>RequiredValue of requiredGuards returned in the response body.
blockedReasonsarray<JSON value>RequiredValue of blockedReasons returned in the response body.
requiredEvidencearray<JSON value>RequiredValue of requiredEvidence returned in the response body.
rulesarray<JSON value>RequiredValue of rules returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests/intake-support-contract'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "source": "<string>",
  "intakeSupportMode": "<string>",
  "templateCatalogReadOnly": false,
  "duplicateDetectionDryRunOnly": false,
  "draftStateReadOnly": false,
  "liveSubmissionAllowed": false,
  "draftPersistenceAllowed": false,
  "duplicateQueryAllowed": false,
  "workflowMutationAllowed": false,
  "approvalMutationAllowed": false,
  "providerCallsAllowed": false,
  "rawRequestPayloadsAllowed": false,
  "rawDraftPayloadsAllowed": false,
  "rawDuplicateRowsAllowed": false,
  "rawProviderPayloadsAllowed": false,
  "rawLogContentAllowed": false,
  "rawRowsAllowed": false,
  "rawRecipientDataAllowed": false,
  "credentialValuesAllowed": false,
  "tenantIdentifiersAllowed": false,
  "objectIdentifiersAllowed": false,
  "privateNetworkValuesAllowed": false,
  "supportSurfaces": [],
  "templateTypes": [],
  "duplicateSignals": [],
  "draftStates": [],
  "requiredGuards": [],
  "blockedReasons": [],
  "requiredEvidence": [],
  "rules": []
}

GET/api/requests/lifecycle-contract

request access

Requests lifecycle.

Permissions

Access classCredentialScoping
requestAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests/lifecycle-contract

Path parameters

This operation has no path parameters.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
sourcestringRequiredOrigin or authority of the returned data.
lifecycleModestringRequiredValue of lifecycleMode returned in the response body.
dryRunRequiredbooleanRequiredValue of dryRunRequired returned in the response body.
approvalRequiredbooleanRequiredValue of approvalRequired returned in the response body.
lockRequiredbooleanRequiredValue of lockRequired returned in the response body.
redactedEvidenceRequiredbooleanRequiredValue of redactedEvidenceRequired returned in the response body.
liveExecutionAllowedbooleanRequiredValue of liveExecutionAllowed returned in the response body.
providerCallsAllowedbooleanRequiredValue of providerCallsAllowed returned in the response body.
workflowMutationAllowedbooleanRequiredValue of workflowMutationAllowed returned in the response body.
approvalMutationAllowedbooleanRequiredValue of approvalMutationAllowed returned in the response body.
lockMutationAllowedbooleanRequiredValue of lockMutationAllowed returned in the response body.
rawRequestPayloadsAllowedbooleanRequiredValue of rawRequestPayloadsAllowed returned in the response body.
rawExecutionLogsAllowedbooleanRequiredValue of rawExecutionLogsAllowed returned in the response body.
rawEvidencePayloadsAllowedbooleanRequiredValue of rawEvidencePayloadsAllowed returned in the response body.
rawProviderPayloadsAllowedbooleanRequiredValue of rawProviderPayloadsAllowed returned in the response body.
credentialValuesAllowedbooleanRequiredValue of credentialValuesAllowed returned in the response body.
secretValuesAllowedbooleanRequiredValue of secretValuesAllowed returned in the response body.
accessTokenValuesAllowedbooleanRequiredValue of accessTokenValuesAllowed returned in the response body.
rawRecipientDataAllowedbooleanRequiredValue of rawRecipientDataAllowed returned in the response body.
lifecycleStagesJSON valueRequiredValue of lifecycleStages returned in the response body.
requiredInputsarray<JSON value>RequiredValue of requiredInputs returned in the response body.
requiredGuardsJSON valueRequiredValue of requiredGuards returned in the response body.
planSectionsJSON valueRequiredValue of planSections returned in the response body.
blockedReasonsJSON valueRequiredValue of blockedReasons returned in the response body.
requiredEvidencearray<JSON value>RequiredValue of requiredEvidence returned in the response body.
rulesarray<JSON value>RequiredValue of rules returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests/lifecycle-contract'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "source": "<string>",
  "lifecycleMode": "<string>",
  "dryRunRequired": false,
  "approvalRequired": false,
  "lockRequired": false,
  "redactedEvidenceRequired": false,
  "liveExecutionAllowed": false,
  "providerCallsAllowed": false,
  "workflowMutationAllowed": false,
  "approvalMutationAllowed": false,
  "lockMutationAllowed": false,
  "rawRequestPayloadsAllowed": false,
  "rawExecutionLogsAllowed": false,
  "rawEvidencePayloadsAllowed": false,
  "rawProviderPayloadsAllowed": false,
  "credentialValuesAllowed": false,
  "secretValuesAllowed": false,
  "accessTokenValuesAllowed": false,
  "rawRecipientDataAllowed": false,
  "lifecycleStages": null,
  "requiredInputs": [],
  "requiredGuards": null,
  "planSections": null,
  "blockedReasons": null,
  "requiredEvidence": [],
  "rules": []
}

GET/api/requests/preflight-contract

request access

Requests preflight.

Permissions

Access classCredentialScoping
requestAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests/preflight-contract

Path parameters

This operation has no path parameters.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
sourcestringRequiredOrigin or authority of the returned data.
preflightModestringRequiredValue of preflightMode returned in the response body.
inputSchemaReadOnlybooleanRequiredValue of inputSchemaReadOnly returned in the response body.
dryRunDecisionRequiredbooleanRequiredValue of dryRunDecisionRequired returned in the response body.
evidenceRedactionRequiredbooleanRequiredValue of evidenceRedactionRequired returned in the response body.
liveSubmissionAllowedbooleanRequiredValue of liveSubmissionAllowed returned in the response body.
liveExecutionAllowedbooleanRequiredValue of liveExecutionAllowed returned in the response body.
providerCallsAllowedbooleanRequiredValue of providerCallsAllowed returned in the response body.
providerValidationAllowedbooleanRequiredValue of providerValidationAllowed returned in the response body.
livePolicyEvaluationAllowedbooleanRequiredValue of livePolicyEvaluationAllowed returned in the response body.
requestMutationAllowedbooleanRequiredValue of requestMutationAllowed returned in the response body.
workflowMutationAllowedbooleanRequiredValue of workflowMutationAllowed returned in the response body.
approvalMutationAllowedbooleanRequiredValue of approvalMutationAllowed returned in the response body.
workerDispatchAllowedbooleanRequiredValue of workerDispatchAllowed returned in the response body.
rawRequestPayloadsAllowedbooleanRequiredValue of rawRequestPayloadsAllowed returned in the response body.
rawValidationRowsAllowedbooleanRequiredValue of rawValidationRowsAllowed returned in the response body.
rawProviderPayloadsAllowedbooleanRequiredValue of rawProviderPayloadsAllowed returned in the response body.
rawInventoryRowsAllowedbooleanRequiredValue of rawInventoryRowsAllowed returned in the response body.
rawCmdbRowsAllowedbooleanRequiredValue of rawCmdbRowsAllowed returned in the response body.
rawApprovalDataAllowedbooleanRequiredValue of rawApprovalDataAllowed returned in the response body.
rawUserDataAllowedbooleanRequiredValue of rawUserDataAllowed returned in the response body.
rawRecipientDataAllowedbooleanRequiredValue of rawRecipientDataAllowed returned in the response body.
credentialValuesAllowedbooleanRequiredValue of credentialValuesAllowed returned in the response body.
tokenValuesAllowedbooleanRequiredValue of tokenValuesAllowed returned in the response body.
tenantIdentifiersAllowedbooleanRequiredValue of tenantIdentifiersAllowed returned in the response body.
objectIdentifiersAllowedbooleanRequiredValue of objectIdentifiersAllowed returned in the response body.
principalIdentifiersAllowedbooleanRequiredValue of principalIdentifiersAllowed returned in the response body.
privateNetworkValuesAllowedbooleanRequiredValue of privateNetworkValuesAllowed returned in the response body.
hypervisorScopearray<JSON value>RequiredValue of hypervisorScope returned in the response body.
preflightSurfacesarray<JSON value>RequiredValue of preflightSurfaces returned in the response body.
validationStagesarray<JSON value>RequiredValue of validationStages returned in the response body.
requiredInputsarray<JSON value>RequiredValue of requiredInputs returned in the response body.
requiredGuardsarray<JSON value>RequiredValue of requiredGuards returned in the response body.
blockedReasonsarray<JSON value>RequiredValue of blockedReasons returned in the response body.
requiredEvidencearray<JSON value>RequiredValue of requiredEvidence returned in the response body.
rulesarray<JSON value>RequiredValue of rules returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests/preflight-contract'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "source": "<string>",
  "preflightMode": "<string>",
  "inputSchemaReadOnly": false,
  "dryRunDecisionRequired": false,
  "evidenceRedactionRequired": false,
  "liveSubmissionAllowed": false,
  "liveExecutionAllowed": false,
  "providerCallsAllowed": false,
  "providerValidationAllowed": false,
  "livePolicyEvaluationAllowed": false,
  "requestMutationAllowed": false,
  "workflowMutationAllowed": false,
  "approvalMutationAllowed": false,
  "workerDispatchAllowed": false,
  "rawRequestPayloadsAllowed": false,
  "rawValidationRowsAllowed": false,
  "rawProviderPayloadsAllowed": false,
  "rawInventoryRowsAllowed": false,
  "rawCmdbRowsAllowed": false,
  "rawApprovalDataAllowed": false,
  "rawUserDataAllowed": false,
  "rawRecipientDataAllowed": false,
  "credentialValuesAllowed": false,
  "tokenValuesAllowed": false,
  "tenantIdentifiersAllowed": false,
  "objectIdentifiersAllowed": false,
  "principalIdentifiersAllowed": false,
  "privateNetworkValuesAllowed": false,
  "hypervisorScope": [],
  "preflightSurfaces": [],
  "validationStages": [],
  "requiredInputs": [],
  "requiredGuards": [],
  "blockedReasons": [],
  "requiredEvidence": [],
  "rules": []
}

GET/api/requests/{id}

request access

Get requests.

Permissions

Access classCredentialScoping
requestAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests/{id}

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests/<id>'

GET/api/requests/{id}/approval-decisions

audit access

The individual approval-decision LEDGER for one request: every recorded request_approval_decisions row (approval_epoch, current, role, decision, actor, decided_at, reason), including historical cycles that no longer satisfy quorum.

The companion to requests_approval_quorum: quorum = the verdict, this = the records behind it.

Audit-tier — same identity-grade sensitivity as the quorum endpoint and the audit trail. NOT approve-tier: every approve-holding role (DatacenterApprover, PlatformAdmin) ALSO holds audit, and gating on approve would wrongly exclude the audit-only Auditor from an audit ledger. actor is already exposed by the quorum endpoint's approvers list; reason is the approver's free-text reject justification — treat it as AUDIT-VISIBLE free text (any secret/PII redaction is a write-side concern, out of scope for this read). 404 for an unknown OR out-of-scope request (no oracle). Empty ledger + durable:false with no DB (the dry-run approve arm writes no ledger), distinct from a durable-but-empty {decisions:[],durable:true}.

Permissions

Access classCredentialScoping
auditAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests/{id}/approval-decisions

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
decisionsJSON valueRequiredValue of decisions returned in the response body.
current_approval_epochJSON valueRequiredValue of current_approval_epoch returned in the response body.
durablebooleanRequiredValue of durable returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests/<id>/approval-decisions'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "decisions": null,
  "current_approval_epoch": null,
  "durable": false
}

GET/api/requests/{id}/approval-quorum

audit access

Multi-role approval quorum status for one request (#4).

Reads the recorded request_approval_decisions and reports whether they meet a breadth quorum: distinct approving ROLES and distinct APPROVERS (default 2/2, bounded 1..=10), with any rejection blocking it. Audit-tier (approval identities, like the audit trail). 404 unknown request. READ-ONLY: reports the same current-epoch quorum enforced by the approval flow. Empty + durable:false with no DB.

Permissions

Access classCredentialScoping
auditAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests/{id}/approval-quorum

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

NameTypeRequirementDescription
required_rolesintegerOptionalValue supplied for the required_roles query parameter.
required_approversintegerOptionalValue supplied for the required_approvers query parameter.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests/<id>/approval-quorum'

POST/api/requests/{id}/approve

approve access

Approve requests.

Permissions

Access classCredentialScoping
approveAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/approve

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Idempotency-Key: <idempotency-key>' \
  'https://<your-host>/api/requests/<id>/approve'

POST/api/requests/{id}/approve-live-apply

admin access

Admin approves the completed LivePlan for this request and mints a CP-signed LiveApply grant (AWX bridge slice 5c).

It revalidates and reconstructs the mutation from the exact immutable plan row/attempt/digest the administrator reviewed; it never accepts a caller-built spec or destination. The agent then independently verifies the signed grant. Admin-gated and mutation-authorizing — fail closed.

Permissions

Access classCredentialScoping
adminAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/approve-live-apply

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
Content-TypestringRequiredRequired by the resolved Axum Json<T> request extractor; send application/json.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

JSON structure: ReviewedLivePlanSelection.

NameTypeRequirementDescription
approved_plan_job_idstring (uuid)RequiredValue of approved_plan_job_id in the JSON request body.
approved_plan_attempt_idstring (uuid)RequiredValue of approved_plan_attempt_id in the JSON request body.
approved_plan_digeststringRequiredValue of approved_plan_digest in the JSON request body.

Response

StatusDescriptionBody
200Mints and queues the request-scoped LiveApply job.Value

200 response body

Structure: Value.

NameTypeRequirementDescription
job_idstring (uuid)RequiredIdentifier of the queued LiveApply agent job.
approverstringRequiredVerified interactive principal that approved the live apply.
statusstringRequiredInitial job status; Pending on success.
modestringRequiredExecution mode; LiveApply on success.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '{"approved_plan_job_id":"<uuid>","approved_plan_attempt_id":"<uuid>","approved_plan_digest":"<string>"}' \
  'https://<your-host>/api/requests/<id>/approve-live-apply'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "job_id": "<uuid>",
  "approver": "<string>",
  "status": "<string>",
  "mode": "<string>"
}

GET/api/requests/{id}/audit

audit access

The ordered, actor-attributed audit trail for one request.

DB-backed entries are tagged durable: true; the no-DB (dry-run) store is tagged durable: false. No secrets are ever written to the trail, so this read is safe to expose.

Permissions

Access classCredentialScoping
auditAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests/{id}/audit

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests/<id>/audit'

POST/api/requests/{id}/cancel

request access

Withdraw a request before execution begins.

SoD: an admin may cancel any request; a requester may cancel only their OWN request (matched against requests.created_by). The central route gate applies a coarse request floor; this handler enforces the finer requester-or-admin rule because the route table cannot see created_by.

Permissions

Access classCredentialScoping
requestAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/cancel

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
Content-TypestringRequiredRequired by the resolved Axum Json<T> request extractor; send application/json.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

JSON structure: ReasonBody.

NameTypeRequirementDescription
reasonstringRequiredMandatory human reason recorded in lifecycle evidence and the audit trail. Per-operation validation and length limits apply.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '{"reason":"<string>"}' \
  'https://<your-host>/api/requests/<id>/cancel'

GET/api/requests/{id}/evidence

audit access

A tamper-evident compliance evidence pack for ONE persisted request: the redacted evidence pack (from the pure engine pipeline, built off the REAL persisted request state) plus the durable, actor-attributed audit trail, sealed with a SHA-256 digest over the stable content.

The digest deliberately excludes generated_at, so re-exporting an unchanged request yields the SAME digest (tamper-evidence). Gated on the audit tier — the same identity-grade sensitivity as the audit trail.

Permissions

Access classCredentialScoping
auditAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests/{id}/evidence

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
request_idJSON valueRequiredRequest correlation or lifecycle identifier.
generated_atJSON valueRequiredValue of generated_at returned in the response body.
algorithmstringRequiredValue of algorithm returned in the response body.
digestJSON valueRequiredValue of digest returned in the response body.
durableJSON valueRequiredValue of durable returned in the response body.
item_countJSON valueRequiredValue of item_count returned in the response body.
redactedJSON valueRequiredValue of redacted returned in the response body.
contentJSON valueRequiredValue of content returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests/<id>/evidence'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "request_id": null,
  "generated_at": null,
  "algorithm": "<string>",
  "digest": null,
  "durable": null,
  "item_count": null,
  "redacted": null,
  "content": null
}

POST/api/requests/{id}/execute

execute access

Execute requests.

Permissions

Access classCredentialScoping
executeAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/execute

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

NameTypeRequirementDescription
modestringOptionalRequested execution mode: omitted / "offline-dry-run" / "dry-run" (default), "live-plan" (privileged), or "live-apply" (rejected here — requires a CP-signed approval grant).

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Idempotency-Key: <idempotency-key>' \
  'https://<your-host>/api/requests/<id>/execute'

GET/api/requests/{id}/execution-job

request access

The execution-agent job dispatched for this request (AWX bridge slice 3).

Read-only AWX-style "job" view: which agent ran it, the mode (dry-run/live), job + result status, the evidence digest, and timestamps. The full (sanitized) evidence lives on the request's stages via GET /api/requests/{id}; this surfaces the job itself. 404 when no job has been dispatched (e.g. request not yet executed).

Permissions

Access classCredentialScoping
requestAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests/{id}/execution-job

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
request_idJSON valueRequiredRequest correlation or lifecycle identifier.
agent_job_idJSON valueRequiredValue of agent_job_id returned in the response body.
modeJSON valueRequiredValue of mode returned in the response body.
statusJSON valueRequiredCurrent operation or resource status.
result_statusJSON valueRequiredValue of result_status returned in the response body.
evidence_digestJSON valueRequiredValue of evidence_digest returned in the response body.
verification_readyJSON valueRequiredValue of verification_ready returned in the response body.
created_atJSON valueRequiredRFC 3339 timestamp when the resource was created.
completed_atJSON valueRequiredValue of completed_at returned in the response body.
sourcestringRequiredOrigin or authority of the returned data.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests/<id>/execution-job'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "request_id": null,
  "agent_job_id": null,
  "mode": null,
  "status": null,
  "result_status": null,
  "evidence_digest": null,
  "verification_ready": null,
  "created_at": null,
  "completed_at": null,
  "source": "<string>"
}

POST/api/requests/{id}/fail

execute access

Mark a request terminally Failed (e.g. an execution or verification failure).

mark a request terminally Failed (e.g. an execution or verification failure). Execute-tier; requires a reason. Valid from any non-concluded state.

Permissions

Access classCredentialScoping
executeAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/fail

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
Content-TypestringRequiredRequired by the resolved Axum Json<T> request extractor; send application/json.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

JSON structure: ReasonBody.

NameTypeRequirementDescription
reasonstringRequiredMandatory human reason recorded in lifecycle evidence and the audit trail. Per-operation validation and length limits apply.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '{"reason":"<string>"}' \
  'https://<your-host>/api/requests/<id>/fail'

POST/api/requests/{id}/lock

execute access

Lock requests.

Permissions

Access classCredentialScoping
executeAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/lock

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Idempotency-Key: <idempotency-key>' \
  'https://<your-host>/api/requests/<id>/lock'

POST/api/requests/{id}/plan

execute access

Plan requests.

Permissions

Access classCredentialScoping
executeAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/plan

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Idempotency-Key: <idempotency-key>' \
  'https://<your-host>/api/requests/<id>/plan'

GET/api/requests/{id}/policy-eval

request access

Evaluate the request's policy readiness against the guardrail catalog.

Informational (a read): it reports which guardrail rules' required inputs are satisfied; it does NOT gate the lifecycle. Degrades to 404 when the request is unknown.

Permissions

Access classCredentialScoping
requestAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

GET https://<your-host>/api/requests/{id}/policy-eval

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

200 response body

Structure: Value.

NameTypeRequirementDescription
sourcestringRequiredOrigin or authority of the returned data.
request_idJSON valueRequiredRequest correlation or lifecycle identifier.
workflow_idJSON valueRequiredValue of workflow_id returned in the response body.
applicableJSON valueRequiredValue of applicable returned in the response body.
readyJSON valueRequiredValue of ready returned in the response body.
blocking_failuresJSON valueRequiredValue of blocking_failures returned in the response body.
decisionsJSON valueRequiredValue of decisions returned in the response body.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request GET \
  --header 'Authorization: Bearer <token>' \
  'https://<your-host>/api/requests/<id>/policy-eval'

Schematic response body

Illustrative shape generated from the extracted field types, not a recorded live response. Values are placeholders; null marks a field whose type could not be resolved.

Success status: 200

{
  "source": "<string>",
  "request_id": null,
  "workflow_id": null,
  "applicable": null,
  "ready": null,
  "blocking_failures": null,
  "decisions": null
}

POST/api/requests/{id}/protect

execute access

The post-completion Protect stage (Theme 8).

Valid only from Completed; computes a dry-run backup-coverage summary for the delivered asset and transitions the request to Protecting. Operator- initiated; execute permission. Mirrors requests_verify (dual-store + CAS).

Permissions

Access classCredentialScoping
executeAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/protect

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Idempotency-Key: <idempotency-key>' \
  'https://<your-host>/api/requests/<id>/protect'

POST/api/requests/{id}/publish

execute access

The post-completion Publish stage (Theme 8).

Valid only from Protecting; imports the CI records and prepares the dry-run CMDB export, then transitions the request to Operational (its resting state). Operator-initiated; execute permission. Mirrors requests_verify.

Permissions

Access classCredentialScoping
executeAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/publish

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Idempotency-Key: <idempotency-key>' \
  'https://<your-host>/api/requests/<id>/publish'

POST/api/requests/{id}/reject

approve access

The approver "say no" act.

Valid only from Planned (the approval decision point); guarded by the approve permission (the inverse of approve). The mandatory reason is recorded in the audit trail and the rejection evidence. Terminal.

Permissions

Access classCredentialScoping
approveAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/reject

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
Content-TypestringRequiredRequired by the resolved Axum Json<T> request extractor; send application/json.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

JSON structure: ReasonBody.

NameTypeRequirementDescription
reasonstringRequiredMandatory human reason recorded in lifecycle evidence and the audit trail. Per-operation validation and length limits apply.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '{"reason":"<string>"}' \
  'https://<your-host>/api/requests/<id>/reject'

POST/api/requests/{id}/retire

execute access

The governed end-of-life stage (Theme 8).

Valid only from Operational; computes a dry-run decommission plan (quarantine-first, rollback-capable) and transitions the request to Retired (the terminal end-of-life state). Operator-initiated; execute permission. Mirrors requests_verify (dual-store + CAS).

Permissions

Access classCredentialScoping
executeAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/retire

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Idempotency-Key: <idempotency-key>' \
  'https://<your-host>/api/requests/<id>/retire'

POST/api/requests/{id}/rework

approve access

Send a request back to Intake for the requester to fix and re-submit (the non-terminal alternative to reject).

Approve-tier; requires a reason. Valid from Validated/Planned/Approved/Locked.

Permissions

Access classCredentialScoping
approveAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/rework

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
Content-TypestringRequiredRequired by the resolved Axum Json<T> request extractor; send application/json.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

JSON structure: ReasonBody.

NameTypeRequirementDescription
reasonstringRequiredMandatory human reason recorded in lifecycle evidence and the audit trail. Per-operation validation and length limits apply.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '{"reason":"<string>"}' \
  'https://<your-host>/api/requests/<id>/rework'

POST/api/requests/{id}/steps/{step_key}/approve-live-apply

admin access

.

.

Per-step mutation is intentionally disabled until each AwaitingApproval step has an admin-scoped, digest-bound safe review surface. Permission, parent scope, and separation-of-duties checks remain ahead of the generic 409 so the refusal preserves the route's non-enumeration contract.

Permissions

Access classCredentialScoping
adminAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/steps/{step_key}/approve-live-apply

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.
step_keystringRequiredValue of the step_key request-path segment.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
Content-TypestringRequiredRequired by the resolved Axum Json<T> request extractor; send application/json.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

JSON structure: ReviewedLivePlanSelection.

NameTypeRequirementDescription
approved_plan_job_idstring (uuid)RequiredValue of approved_plan_job_id in the JSON request body.
approved_plan_attempt_idstring (uuid)RequiredValue of approved_plan_attempt_id in the JSON request body.
approved_plan_digeststringRequiredValue of approved_plan_digest in the JSON request body.

Response

No successful response schema was extracted for this operation.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --data '{"approved_plan_job_id":"<uuid>","approved_plan_attempt_id":"<uuid>","approved_plan_digest":"<string>"}' \
  'https://<your-host>/api/requests/<id>/steps/<step_key>/approve-live-apply'

POST/api/requests/{id}/validate

execute access

Validate requests.

Permissions

Access classCredentialScoping
executeAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/validate

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Idempotency-Key: <idempotency-key>' \
  'https://<your-host>/api/requests/<id>/validate'

POST/api/requests/{id}/verify

execute access

Verify requests.

Permissions

Access classCredentialScoping
executeAn authenticated session or API bearer token is required.The access class is enforced first; site and environment scopes narrow resources on scoped operations.

HTTP request

POST https://<your-host>/api/requests/{id}/verify

Path parameters

NameTypeRequirementDescription
idstringRequiredIdentifier of the target resource in the request path.

Query parameters

This operation has no query parameters.

Request headers

NameTypeRequirementDescription
AuthorizationstringOptionalHuman credential alternative: supply one Bearer rys_... session token, ryk_... API token, or validated identity-provider JWT here. Do not combine it with X-Ryuki-Session-Id or the session cookie; conflicting carriers fail closed.
X-Ryuki-Session-IdstringOptionalOpaque rys_... session-token carrier used by the portal for mutations. Administrative session UUIDs cannot authenticate. Supply exactly one credential carrier per request.
Idempotency-KeystringOptionalOptional at-most-once retry key for human mutations. When omitted, the idempotency middleware passes the request through without deduplication.
traceparentstringOptionalOptional correlation input. When the second dash-separated segment has 32 characters, Ryuki reuses it as the request correlation identifier; this is not full W3C validation.

Request body

This operation does not accept a request body.

Response

StatusDescriptionBody
200OKValue

For 200, the known response body type is Value. Its field schema is unavailable, so no JSON shape is inferred.

Errors

JSON failures use one of the platform error envelopes and include the request correlation metadata when routing reaches the API middleware. See Errors for the exact shapes, authentication failures, retry guidance, and transport-level exceptions.

Examples

Request

curl --silent --show-error --globoff \
  --request POST \
  --header 'Authorization: Bearer <token>' \
  --header 'Idempotency-Key: <idempotency-key>' \
  'https://<your-host>/api/requests/<id>/verify'
Last updated 2026-07-16 · Generated from the API route registrations.