Decisions

Govern a disbursement (Gate 2 — disbursement authority)

POST
/v1/protocol/ops/disbursement-authority/verify

Evaluates a vendor payment at release time: authorized role, segregation of duties, dual authorization, and duplicate-payment detection (a vendor + invoice/amount fingerprint compared against prior org evaluations in the lookback window).

Authorization

ApiKeyAuth
AuthorizationBearer <token>

An organization API key. Its scopes decide what it may call; decision:shadow is the narrowest: SHADOW evaluations through POST /v1/authority/grants or its alias POST /v1/authority/enforce-and-bind only (DECISION_SHADOW_MODE_DENIED in any other mode; DECISION_SHADOW_FIELD_DENIED for a body carrying context.decionis_policy, evidence or escalation), with no integration dispatch. A key whose only scope is decision:shadow (an AgentSafe hosted gateway's) reaches exactly those two, POST /v1/auth/credential-context, POST /v1/hosted-gateway/keys/confirm and POST /v1/hosted-gateway/keys/revoke-self; every other route answers 403 HOSTED_GATEWAY_KEY_PATH_DENIED. decision:enforce is an enforced hosted gateway's key: evaluations in SHADOW or ENFORCEMENT through POST /v1/authority/grants or its alias (400 DECISION_ENFORCE_FIELD_DENIED for a body carrying context.decionis_policy; it never holds policy:write), and the grants and managed escalations they bind. A key whose scopes are decision:enforce (with or without decision:shadow) reaches exactly POST /v1/authority/enforce-and-bind, POST /v1/authority/grants, GET /v1/authority/grants/{grant_id}, POST /v1/authority/grants/{grant_id}/claims, POST /v1/authority/grants/{grant_id}/receipts, POST /v1/authority/grants/{grant_id}/reconciliations, POST /v1/execution/verify-token, POST /v1/execution/claim-token, POST /v1/execution/consume-token, POST /v1/execution/finalize-token, GET /v1/authority/escalations/{escalation_id}, DELETE /v1/authority/escalations/{escalation_id}, POST /v1/auth/credential-context, POST /v1/hosted-gateway/keys/confirm and POST /v1/hosted-gateway/keys/revoke-self, each id a UUID; every other route answers 403 HOSTED_GATEWAY_KEY_PATH_DENIED.

In: header

Header Parameters

X-Correlation-ID?string

Request Body

application/json

A spend/disbursement payload for the ops spend-control vertical pack.

object_type?string
object_id?string
action?string
proposed_state?

amount, currency, vendor_id, invoice_number, vendor_status, expense_threshold, refund_limit, credit_limit, etc.

actor?

The acting principal and its role (e.g. role Controller or CFO).

context?

requested_by, approved_by, second_approver, org_id, etc.

[key: string]?any

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/v1/protocol/ops/disbursement-authority/verify" \  -H "Content-Type: application/json" \  -d '{}'
{  "decision": "ALLOW",  "outcome": "APPROVE",  "reason": "string",  "required_action": "string",  "gate": "spend_admission",  "decision_domain": "OPS_SPEND_ADMISSION",  "rule_id": "string",  "duplicate_suspected": true,  "policy_version": "string",  "dossier_id": "string",  "dossier_sha256": "string",  "ledger_entry_id": "string",  "ledger_entry_hash": "string",  "federated": true,  "pipeline": true,  "idempotent_replay": true}