Resolve an outcome dispute (platform)
Platform credential only. UPHELD keeps the subject out of statements and charges for good; REJECTED lets it count again, through a correction in the next statement. A dispute is resolved once (409 outcome_dispute_resolved).
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
Path Parameters
uuidRequest Body
application/json
Value in
- "UPHELD"
- "REJECTED"
1 <= length <= 500Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/outcomes/disputes/497f6eca-6276-4993-bfeb-53cbbbba6f08/resolutions" \ -H "Content-Type: application/json" \ -d '{ "resolution": "UPHELD" }'{ "dispute_id": "6a12a61b-d612-4dc3-8c84-e4093662a9c8", "subject_digest": "string", "reason": "string", "opened_at": "2019-08-24T14:15:22Z", "state": "OPEN", "resolution_note": "string", "resolved_at": "2019-08-24T14:15:22Z"}Dispute an outcome subject POST
Organization API key with decision:write and role ADMIN or higher. While the dispute is open, or once it is upheld, the subject counts as disputed in every statement and in no charge. A dispute opened after a month closed reaches the next statement as a correction. One open dispute per subject (409 outcome_dispute_open); a subject the meter has never seen is 404.
List an organization's outcome charges (internal producers) GET
Internal. The producer that bills a platform subscription (Commerce) reads the charges of one organization with its producer token, which must carry the outcomes capability. status=unbilled (the default) returns only charges with no receipt. Contract: packages/shared/contracts/OutcomeCharge.v1.json.

