Skip to main content
POST
Verify an Execution Intent's signature

Body

application/json

A signed statement, made and stored BEFORE an action is released to a connector, of exactly what is about to be released (ADR-0012). It exists so that an action that was released always has signed evidence behind it, even when the Execution Trust Record cannot be produced afterwards. It contains only facts that exist before release: never the execution result, and never the raw intent parameters (the businessTransactionHash binds the intent to them). It is a separate record from the Execution Trust Record, which keeps its own format. An intent proves what was about to be released. It does NOT prove the action was released or what its result was. At most one Execution Intent exists per businessTransactionId.

intentId
string
required

Unique Execution Intent identifier.

businessTransactionId
string
required

The Business Transaction this intent belongs to.

decisionId
string
required

The Decision that approved the action.

authorizationId
string
required

The signed execution authorization this intent refers to. Matches authorization.payload.authorizationId in the Execution Trust Record.

policyName
string
required
policyVersion
string
required
businessTransactionHash
string
required

Hash of the executable content (action, target and parameters), copied from the signed authorization. It binds the intent to the exact parameters that were authorized without repeating them here.

action
string
required

The capability about to be released, for example paytm:refund.

target
string
required

The target of the action, for example the order being refunded. Together with action and businessTransactionId it is what an operator searches for at the connector.

createdAt
string<date-time>
required

UTC timestamp when the intent was created, before the action was released.

intentHash
string
required

Canonical hash of the intent, same convention as ExecutionTrustRecord.trustRecordHash.

signature
object
required

Signature over the canonical Execution Intent, made with the deployment's signing key (local or AWS KMS), the same root of trust as the Execution Trust Record.

policyContentHash
string

Hash of the exact policy content in force, copied from the signed authorization. Absent when the authorization carries none.

signalsHash
string

Hash of the signals that were evaluated, copied from the signed authorization. Absent when the authorization carries none.

submittedBy
string

Authenticated caller who submitted the request. Absent when caller authentication is disabled.

grantedCapability
string

The capability the caller was granted, when one was recorded.

Response

Verification completed. A 200 does not by itself mean the signature verified, see the valid field.

Response shared by POST /refusal/verify and POST /audit/verify: a bare signature-validity result, no wrapper, no partial-failure detail. Both routes verify a signature over bytes with no database lookup, so there is nothing more specific to report than valid or not.

valid
boolean
required

Whether the signature verifies against Parmana's public key for the stated algorithm and key ID.