Edge

Issue the organization's active policy bundle, signed for the edge evaluator

GET
/v1/edge/policy-bundles/current

Signs the bundle hosted evaluation would run on right now and returns it as a compact JWS for the Decionis edge evaluator (the WebAssembly policy core a deployment runs inside its own network). The edge evaluator evaluates only bundles Decionis signed: it verifies the signature against the keys its release pins (published at /.well-known/decionis-policy-bundle-jwks.json), the audience against its organization, the validity window against the time its host supplies, and the bundle against bundle_digest.

Selection is hosted evaluation's own: the newest active bundle whose effective window contains now and that passes the maker-checker gate, or, when policy_version is given, exactly that version among them. An unapproved, historical, not-yet-effective or expired bundle is never signed; like hosted evaluation, it is treated as not active and the answer is 404 POLICY_BUNDLE_NOT_FOUND with the policy guard's reason.

The signed bundle lives ttl_seconds (default 7 days, at most 30 days and at most the organization's plan maximum), never past the bundle's own effective_to. Every issuance is recorded before it is returned (see GET /v1/edge/policy-bundles/issuances); one that cannot be recorded is not issued. Requires an organization API key with policy:read (or policy:* / org:*); keys without explicit scopes are refused.

Only organizations licensed for the edge evaluator receive bundles: Enterprise and self-managed plans include it, Premium with the edge add-on, and an operator may list an organization for a pilot. Any other organization is answered 403 EDGE_EVALUATOR_NOT_ENTITLED (its signed entitlement, GET /v1/edge/entitlement, says why).

The bundle is core_abi: 3: it also carries what hosted would decide differently for this organization, resolved with hosted's own code — vertical_pack (its configured pack, or the operator's pack override, else null) and max_mode / max_mode_reason (SHADOW with hosted's 403 code for an unclaimed provisional or AWS service workspace, else ENFORCEMENT). An edge module older than ABI 3 refuses such a bundle rather than decide without them. A bundle whose rules compare two facts (EQ_FACT, NEQ_FACT) is core_abi: 7, which an edge module older than ABI 7 refuses the same way, and one that declares allowed_transitions is core_abi: 8, which an edge module older than ABI 8 refuses. A bundle with a rule that draws on a held allowance (then.allowance) is never signed for an edge: only hosted Decionis holds an allowance, and an edge module would approve such a rule with nothing reserved.

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

Query Parameters

decision_domain?string

Recorded with the issuance. The bundle carries the rules of every decision domain; the domain is chosen per evaluation, so it does not change which bundle is signed.

Match^[A-Za-z0-9_.:-]+$
Length1 <= length <= 100
policy_version?string

Sign exactly this version; it must be active and approved.

Length1 <= length <= 200
ttl_seconds?integer
Range60 <= value <= 2592000
Default604800

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/edge/policy-bundles/current"
{  "signed_bundle": "string",  "bundle_id": "string",  "policy_version": "string",  "kid": "string",  "issued_at": "2019-08-24T14:15:22Z",  "not_before": "2019-08-24T14:15:22Z",  "expires_at": "2019-08-24T14:15:22Z"}