Policies

Submit a versioned policy bundle artifact for Decionis encoding

POST
/v1/protocol/policies/bundles

Use this endpoint only when an integration participates in policy authoring. The SDK submits a reviewed policy bundle artifact to Decionis; it does not evaluate or enforce policy rules locally.

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
Idempotency-Key?string

Request Body

application/json

protocol_version*string
Match^1\.[0-9]+(\.[0-9]+)?$
bundle_id*string
Formatuuid
org_id*string
version*string
Length1 <= length <= 100
effective_from*string
Formatdate-time
effective_to?string
Formatdate-time
rules*array<>
Items1 <= items
allowed_transitions?array<>

Which states a decision type's target may move between, checked before any rule. For a decision of decision_type, the move from the state at the fact path from (typically agent_safe.precondition.state) to the state at to must be one of allowed, exactly as written, or the evaluation resolves transition_not_allowed and the outcome is REJECT. No value at to asks for no state, and to equal to from is no transition. A from or to that is not a string fails safe to ESCALATE as missing_required_signals. A bundle declaring any is signed for the edge as core_abi: 8.

Itemsitems <= 50
metadata?
signature?
commerce_preflight?
commerce_history?

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/v1/protocol/policies/bundles" \  -H "Content-Type: application/json" \  -d '{    "protocol_version": "string",    "bundle_id": "fc6f5a67-caa1-4339-9c14-a67826143b60",    "org_id": "string",    "version": "string",    "effective_from": "2019-08-24T14:15:22Z",    "rules": [      {        "rule_id": "string",        "name": "string",        "decision_domain": "string",        "when": {},        "then": {          "action": "REQUIRE_REVIEW"        },        "priority": 0,        "enabled": true      }    ]  }'
{  "accepted": true,  "service": "string",  "protocol_version": "string",  "artifact": "policy_bundle",  "artifact_id": "string",  "org_id": "string",  "received_at": "2019-08-24T14:15:22Z"}