Evaluate one exact agent action and bind it to a single-use execution grant

The grant resource. Decionis recomputes the SHA-256 hash of the canonical execution intent, evaluates policy, and issues a short-lived Ed25519 execution grant only for an ALLOW evaluated in ENFORCEMENT mode. This is the handler of the deprecated alias POST /v1/authority/enforce-and-bind, registered twice: every rule documented there (Idempotency-Key binding, Presence and attestation evidence, signed signals, MANAGED escalation, the verification envelope by client version, context.decionis_policy, and the decision:shadow confinement) applies here unchanged.

The issued grant is addressed afterwards as /v1/authority/grants/{grantId}, where grantId is the grant's jti: the execution_token_jti of this response, the jti recorded for the grant, and the jti claim of the signed execution token.

executor (optional) says who will carry the grant out. It is never part of the canonical intent, its hash, or the grant's binding. When executor.style is permit and a grant was issued, the decision also carries permit_id (the grant's jti), intent_sha256 (the intent hash as bare hex, written as dossier_sha256 is) and expires_at (execution_token_expires_at). Without executor, or with dispatch, the response is exactly the enforce-and-bind response. A MANAGED escalation's locator-only summary carries no grant, so it never carries permit fields.

post/v1/authority/grants

Request

  • Base URL: https://api.decionis.com
  • URL: https://api.decionis.com/v1/authority/grants
  • Auth: HTTP bearer

Headers

Idempotency-Keystring

Request body

protocol_version'agent-safe.intent/1' required
tenant_idstring uuid required
intent_idstring uuid required
captured_atstring date-time required
expires_atstring date-time required

Must be later than captured_at and no more than five minutes after it.

expected_effect_digeststring

Digest-only commitment to the expected downstream state.

intent_hashstring required

SHA-256 of the UTF-8 canonical JSON ExecutionIntentBinding. Objects are recursively key-sorted using ECMAScript's default UTF-16 code-unit ordering and serialized with JSON.stringify semantics.

mode'SHADOW' | 'PARALLEL' | 'ENFORCEMENT' required

Response

Bound policy decision; only ALLOW carries an execution token

decision_idstring required
chain_idstring nullable required
status'ALLOW' | 'BLOCK' | 'ESCALATE' | 'REVIEW_REQUIRED' | 'ERROR' required
should_executeboolean required
authority_classification'AUTHORITATIVE' | 'OBSERVATIONAL' required

Authority possessed by an artifact, independent of its verdict. Only AUTHORITATIVE artifacts may become execution-eligible.

execution_eligibleboolean required

True only for an AUTHORITATIVE ALLOW carrying an exact-action ExecutionBinding and executable grant.

execution_binding_digeststring nullable required
reason_codesstring[] required
action_hashstring required
policy_versionstring nullable required
mode'SHADOW' | 'PARALLEL' | 'ENFORCEMENT' | 'null' nullable required
execution_tokenstring nullable required

Present only when status is ALLOW and should_execute is true.

execution_token_jtistring nullable required

Single-use identifier of the issued execution token.

execution_token_key_idstring nullable required

Identifier of the key that signed the issued execution token.

execution_token_expires_atstring date-time nullable required
dossier_idstring nullable required
dossier_sha256string nullable required
dossier_urlstring nullable required
approval_request_idstring nullable required
ledger_entry_idstring nullable required
permit_idstring uuid

Present only when the request named a permit executor and a grant was issued: the grant's jti (execution_token_jti), the {grantId} of /v1/authority/grants/{grantId}.

intent_sha256string

Present with permit_id: the intent hash (action_hash) as bare lowercase hex, written as dossier_sha256 is.

expires_atstring date-time

Present with permit_id: when the grant stops being claimable (execution_token_expires_at).

Example response

{
  "verification": {
    "signature_algorithm": "HMAC-SHA256"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.