Draft an outcome agreement
Organization API key with decision:write and role ADMIN or higher; the organization comes from the key. Drafts the agreed outcome meter (decionis.outcomes.agreement/1): workflow, primary metric, scope, baseline, currency and conversion, deductions, who confirms a problem, exclusions, attribution window, monthly close and commercial basis. The agreement becomes ACTIVE only after Decionis signs it with the dossier key and a customer signatory co-signs with a passkey in the delivered case. 503 outcomes_disabled while DECIONIS_OUTCOMES_ENABLED is not 1.
Authorization
ApiKeyAuth 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
Request Body
application/json
Value in
- "sandbox"
- "production"
nullResponse Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/outcomes/agreements" \ -H "Content-Type: application/json" \ -d '{ "environment": "sandbox", "terms": { "version": "decionis.outcomes.agreement/1", "workflow": "PAYMENT_SAFETY", "primary_metric": "CONFIRMED_PREVENTED_LOSS", "scope": { "platforms": [ "string" ], "action_types": [ "string" ], "connection_ids": [ "9093a418-aa3e-41a3-ae26-08ea1b46e535" ], "policy": { "policy_id": "ee9b03e0-6495-427a-85a5-34444d24ae04", "revision_digest": "string" } }, "baseline": { "method": "SHADOW_COMPARISON", "from": "string", "to": "string", "description": "string" }, "currency": { "reporting": "string", "reporting_scale": 0, "conversion": "NONE", "rates": [ { "currency": "string", "rate_micros": 1 } ], "source": "string" }, "deductions": { "false_hold_minor": 0, "delay_hour_minor": 0, "analyst_minute_minor": 0 }, "confirmation": "REVIEWER", "exclusions": [ { "code": "string", "description": "string" } ], "attribution_days": 1, "period": { "cadence": "MONTHLY", "close_after_days": 0 }, "commercial": { "basis": "NONE", "rate_bps": 0, "floor_minor": 0, "cap_minor": 0 }, "effective_from": "string", "effective_to": "string" } }'{ "artifact": { "version": "decionis.outcomes.agreement/1", "agreement_id": "67dd069b-637c-4b8e-8d92-17a313d06fb8", "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b", "environment": "sandbox", "terms": { "version": "decionis.outcomes.agreement/1", "workflow": "PAYMENT_SAFETY", "primary_metric": "CONFIRMED_PREVENTED_LOSS", "scope": { "platforms": [ "string" ], "action_types": [ "string" ], "connection_ids": [ "9093a418-aa3e-41a3-ae26-08ea1b46e535" ], "policy": { "policy_id": "ee9b03e0-6495-427a-85a5-34444d24ae04", "revision_digest": "string" } }, "baseline": { "method": "SHADOW_COMPARISON", "from": "string", "to": "string", "description": "string" }, "currency": { "reporting": "string", "reporting_scale": 0, "conversion": "NONE", "rates": [ { "currency": "string", "rate_micros": 1 } ], "source": "string" }, "deductions": { "false_hold_minor": 0, "delay_hour_minor": 0, "analyst_minute_minor": 0 }, "confirmation": "REVIEWER", "exclusions": [ { "code": "string", "description": "string" } ], "attribution_days": 1, "period": { "cadence": "MONTHLY", "close_after_days": 0 }, "commercial": { "basis": "NONE", "rate_bps": 0, "floor_minor": 0, "cap_minor": 0 }, "effective_from": "string", "effective_to": "string" }, "supersedes": "09391fa8-b623-4dc7-8d11-2a46489536bf", "created_at": "2019-08-24T14:15:22Z" }, "artifact_sha256": "string", "canonicalization": "RFC8785/JCS", "state": "DRAFT", "decionis_signature": { "algorithm": "Ed25519", "keyId": "string", "value": "string" }, "customer_signature": { "user_id": "a169451c-8525-4352-b8ca-070dd449a1a5", "method": "WEBAUTHN", "proof_reference": "string", "proof_sha256": "string", "signed_at": "2019-08-24T14:15:22Z" }, "public_jwks_path": "/.well-known/decision-dossier-jwks.json"}Submit transaction, event or audit records for PolicyAgent to author a policy from POST
The central policy intake for producers holding an organization key (Commerce, the AgentSafe CLI), with decision:write and role MEMBER or higher; the organization comes from the key. Records arrive inline or as one JSON Lines file (decionis.assessments.records/1). Core's assessor for the domain finds the exposures with the production evaluator (commerce today; cards and agents are refused until their assessors exist), reports missing history as a coverage gap, and signs the findings (decionis.assessments.findings/1) like any submitted findings. New findings reach the managed desk, who propose the policy. Identical records return the findings signed the first time (200).
Read an outcome agreement GET
Organization API key with decision:read and role VIEWER or higher. Returns the agreement, its state and both signatures; an agreement of another organization is not found.

