Skip to main content
POST
Close an intent you reconciled by hand

Authorizations

Authorization
string
header
required

Caller API key issued by scripts/generate-api-key.ts. Sent as Authorization: Bearer . Verified against a stored SHA-256 hash in constant time by packages/api/src/auth/StaticKeyAuthenticator.ts. Required on every route not listed as exempt in this document's top-level description. See /api-reference/authentication.

Path Parameters

businessTransactionId
string
required

Body

application/json

Request body for POST /execution-intents/{businessTransactionId}/resolve. Both fields are required. The note is required on purpose, because it is the only record of what the operator found at the connector.

resolution
enum<string>
required

What you established at the connector. NOT_EXECUTED: the action did not run. EXECUTED: it did run.

Available options:
NOT_EXECUTED,
EXECUTED
note
string
required

What you checked and found, for example the connector and the reference you looked at. Surrounding space is trimmed.

Required string length: 1 - 2000

Response

The intent is closed. outcome says whether this call closed it (RESOLVED) or it was already closed (ALREADY_RESOLVED).

Response returned by POST /execution-intents/{businessTransactionId}/resolve. RESOLVED means this call closed the intent. ALREADY_RESOLVED means it was already closed and nothing was changed: the original resolution, note and author are returned, never the new request's.

outcome
enum<string>
required
Available options:
RESOLVED,
ALREADY_RESOLVED
businessTransactionId
string
required
intent
Execution Intent · object
required

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.

Example:
status
Execution Intent Status · object
required

Operational status kept next to a signed Execution Intent. It is NOT part of what is signed, so it changes as the request progresses. PREPARED: the intent is signed and stored, and the action may or may not have been released. An intent that stays PREPARED needs reconciliation with the connector. RELEASED: the release stage returned and the execution context was saved, so the Trust Record can be rebuilt. FINALIZED: a signed Execution Trust Record exists for this transaction. ERRORED: the release stage raised an error. The action may still have been executed, so the outcome is unknown and must be reconciled. RESOLVED: a verified human reconciled a PREPARED or ERRORED intent at the connector and closed it with POST /execution-intents/{businessTransactionId}/resolve, recording what they found and a note. The resolution is an attributed operator statement stored in this unsigned status. It is NOT tamper evident and it is not a Trust Record.

Example: