List financial activity
Returns presentation rows for actual persisted financial requests, newest request first, including direct withdrawals with no conversation. FinancialOperations.get provides the complete canonical request and receipts for each operation identity.
Authentication
Both headers are required.
- Header:
X-Api-Key: YOUR_API_KEY - Header:
Authorization: Bearer YOUR_USER_TOKEN
Path parameters
userIdstring · uuidrequiredThe user in the path; must equal the token's own account.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
Query parameters
limitintegeroptionalHow many financial requests to return, at most 50.
Validation rules
- Default
20- Minimum
1- Maximum
50
cursorstringoptionalThe opaque cursor returned by the preceding page; omit for the newest requests.
Validation rules
- Maximum length
256
originstringoptionalFilter by retained conversation origin, or operation for direct financial requests without a conversation. Omit for every origin.
Validation rules
- Allowed values
["conversation","automation","operation"]
Request example
Illustrative request. Replace the host, credentials and resource IDs with your own. If a request file is shown, create it from the schema above. Review the requested action before sending it.
curl --request GET 'https://api.example.test/v1/users/YOUR_USER_ID/activity/executions' \
--header 'X-Api-Key: YOUR_API_KEY' \
--header 'Authorization: Bearer YOUR_USER_TOKEN'
Responses
200 A page of financial activity and the pending approval count.
A page of financial activity and the pending approval count.
application/json · object
dataarrayrequiredThis page of financial requests, newest request first.
Show attributes
This page of financial requests, newest request first.
Validation rules
- Maximum items
50
Array items · anyOf
One named financial request with its exact review, frozen plan and safe receipts, read from canonical records without reconstructing identity from journal events.
anyOf · 2 variants
Variant 1 · object
keystringrequiredThe durable financial operation ID, stable across approval, execution and later receipts.
Validation rules
- Minimum length
1- Maximum length
200
titlestring or nullrequiredThe conversation's current title; null for an untitled conversation or a direct operation.
createdAtstring · date-timerequiredWhen the financial request was first persisted.
Validation rules
- Format
"date-time"- Pattern
"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
updatedAtstring · date-timerequiredThe latest request or claim creation, execution start, outcome report, signature or settlement timestamp retained for this operation.
Validation rules
- Format
"date-time"- Pattern
"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
approvalobjectoptionalThe request's exact human review, when one was required; absent when it uses standing consent or historical review provenance is unknown.
Show attributes
The request's exact human review, when one was required; absent when it uses standing consent or historical review provenance is unknown.
approvalIdstring · uuidrequiredThe exact single-use review bound to this financial request.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
statusstringrequiredThe recorded human decision, with overdue pending reviews shown as expired; approval alone does not prove execution.
Validation rules
- Allowed values
["pending","approved","denied","expired"]
contractoneOfoptionalThe exact reviewed financial terms, when retained and readable.
Show attributes
The exact reviewed financial terms, when retained and readable.
oneOf · 1 variants
Variant 1 · type: near_intents_transfer
typestringrequiredWhich contract template this is.
Validation rules
- Exact value
"near_intents_transfer"
actionsarrayrequiredThe actions this contract authorizes, executed in order.
Show attributes
The actions this contract authorizes, executed in order.
Validation rules
- Minimum items
1- Maximum items
16
Array items · oneOf
oneOf · 3 variants
Variant 1 · kind: swap
kindstringrequiredExchange one asset for another; custody never leaves the agent wallet.
Validation rules
- Exact value
"swap"
inputanyOfrequiredThe asset this action spends: pinned to one token, or any token the agent wallet holds.
Show attributes
The asset this action spends: pinned to one token, or any token the agent wallet holds.
anyOf · 2 variants
Variant 1 · object
pinnedobjectrequiredThe exact token this asset is pinned to.
Show attributes
The exact token this asset is pinned to.
tokenIdstringrequiredThe token's NEP-141 identifier.
Validation rules
- Pattern
"^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$"
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
Variant 2 · object
anybooleanrequiredAny token the agent wallet holds; the executor picks one at execution.
Validation rules
- Exact value
true
quantityoneOfrequiredHow much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it.
Show attributes
How much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it.
oneOf · 5 variants
Variant 1 · kind: exact_input_tokens
Spend an exact quantity of the input token, not its USD value. Exactly 5 USDC with verified input decimals 6 means amountRaw "5000000". Scale the requested decimal digits using the verified input decimals; reject excess fractional digits. No floating-point arithmetic or bash.
kindstringrequiredSpend an exact amount of the input token.
Validation rules
- Exact value
"exact_input_tokens"
amountRawstringrequiredThe exact input amount, in the input token's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 2 · kind: exact_input_value_usd
Spend a USD-denominated value of the input token: "$5 worth of USDC" means value "5". The host calculates token units from live prices. This does not mean exactly 5 USDC; never substitute it for a token-denominated quantity.
kindstringrequiredSpend a USD-denominated value of the input token.
Validation rules
- Exact value
"exact_input_value_usd"
valuestringrequiredThe USD value to spend, as a decimal string.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})(?:\\.\\d{1,18})?$"
Variant 3 · kind: exact_output_tokens
Receive an exact quantity of the output token. Scale the requested decimal digits using the verified output decimals to obtain amountRaw; reject excess fractional digits. The host calculates the required input. No floating-point arithmetic or bash.
kindstringrequiredReceive an exact amount of the output token.
Validation rules
- Exact value
"exact_output_tokens"
amountRawstringrequiredThe exact output amount, in the output token's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 4 · kind: all_of_input
kindstringrequiredSpend everything the agent wallet holds of the input asset.
Validation rules
- Exact value
"all_of_input"
Variant 5 · kind: fraction_of_input
kindstringrequiredSpend a fraction of the input asset.
Validation rules
- Exact value
"fraction_of_input"
bpsstringrequiredThe fraction to spend, in basis points of the input asset.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,4})$"
outputanyOfrequiredThe asset this action produces: pinned to one token, or left open.
Show attributes
The asset this action produces: pinned to one token, or left open.
anyOf · 2 variants
Variant 1 · object
pinnedobjectrequiredThe exact token this asset is pinned to.
Show attributes
The exact token this asset is pinned to.
tokenIdstringrequiredThe token's NEP-141 identifier.
Validation rules
- Pattern
"^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$"
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
Variant 2 · object
anybooleanrequiredAny token the agent wallet holds; the executor picks one at execution.
Validation rules
- Exact value
true
Variant 2 · kind: withdraw_to_owner
kindstringrequiredReturn an asset to the account that owns the agent wallet.
Validation rules
- Exact value
"withdraw_to_owner"
inputanyOfrequiredThe asset this action spends: pinned to one token, or any token the agent wallet holds.
Show attributes
The asset this action spends: pinned to one token, or any token the agent wallet holds.
anyOf · 2 variants
Variant 1 · object
pinnedobjectrequiredThe exact token this asset is pinned to.
Show attributes
The exact token this asset is pinned to.
tokenIdstringrequiredThe token's NEP-141 identifier.
Validation rules
- Pattern
"^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$"
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
Variant 2 · object
anybooleanrequiredAny token the agent wallet holds; the executor picks one at execution.
Validation rules
- Exact value
true
quantityoneOfrequiredHow much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it.
Show attributes
How much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it.
oneOf · 5 variants
Variant 1 · kind: exact_input_tokens
Spend an exact quantity of the input token, not its USD value. Exactly 5 USDC with verified input decimals 6 means amountRaw "5000000". Scale the requested decimal digits using the verified input decimals; reject excess fractional digits. No floating-point arithmetic or bash.
kindstringrequiredSpend an exact amount of the input token.
Validation rules
- Exact value
"exact_input_tokens"
amountRawstringrequiredThe exact input amount, in the input token's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 2 · kind: exact_input_value_usd
Spend a USD-denominated value of the input token: "$5 worth of USDC" means value "5". The host calculates token units from live prices. This does not mean exactly 5 USDC; never substitute it for a token-denominated quantity.
kindstringrequiredSpend a USD-denominated value of the input token.
Validation rules
- Exact value
"exact_input_value_usd"
valuestringrequiredThe USD value to spend, as a decimal string.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})(?:\\.\\d{1,18})?$"
Variant 3 · kind: exact_output_tokens
Receive an exact quantity of the output token. Scale the requested decimal digits using the verified output decimals to obtain amountRaw; reject excess fractional digits. The host calculates the required input. No floating-point arithmetic or bash.
kindstringrequiredReceive an exact amount of the output token.
Validation rules
- Exact value
"exact_output_tokens"
amountRawstringrequiredThe exact output amount, in the output token's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 4 · kind: all_of_input
kindstringrequiredSpend everything the agent wallet holds of the input asset.
Validation rules
- Exact value
"all_of_input"
Variant 5 · kind: fraction_of_input
kindstringrequiredSpend a fraction of the input asset.
Validation rules
- Exact value
"fraction_of_input"
bpsstringrequiredThe fraction to spend, in basis points of the input asset.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,4})$"
outputanyOfrequiredThe asset this action produces: pinned to one token, or left open.
Show attributes
The asset this action produces: pinned to one token, or left open.
anyOf · 2 variants
Variant 1 · object
pinnedobjectrequiredThe exact token this asset is pinned to.
Show attributes
The exact token this asset is pinned to.
tokenIdstringrequiredThe token's NEP-141 identifier.
Validation rules
- Pattern
"^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$"
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
Variant 2 · object
anybooleanrequiredAny token the agent wallet holds; the executor picks one at execution.
Validation rules
- Exact value
true
Variant 3 · kind: send
kindstringrequiredPay a pinned destination outside the agent wallet.
Validation rules
- Exact value
"send"
inputanyOfrequiredThe asset this action spends: pinned to one token, or any token the agent wallet holds.
Show attributes
The asset this action spends: pinned to one token, or any token the agent wallet holds.
anyOf · 2 variants
Variant 1 · object
pinnedobjectrequiredThe exact token this asset is pinned to.
Show attributes
The exact token this asset is pinned to.
tokenIdstringrequiredThe token's NEP-141 identifier.
Validation rules
- Pattern
"^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$"
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
Variant 2 · object
anybooleanrequiredAny token the agent wallet holds; the executor picks one at execution.
Validation rules
- Exact value
true
quantityoneOfrequiredHow much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it.
Show attributes
How much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it.
oneOf · 5 variants
Variant 1 · kind: exact_input_tokens
Spend an exact quantity of the input token, not its USD value. Exactly 5 USDC with verified input decimals 6 means amountRaw "5000000". Scale the requested decimal digits using the verified input decimals; reject excess fractional digits. No floating-point arithmetic or bash.
kindstringrequiredSpend an exact amount of the input token.
Validation rules
- Exact value
"exact_input_tokens"
amountRawstringrequiredThe exact input amount, in the input token's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 2 · kind: exact_input_value_usd
Spend a USD-denominated value of the input token: "$5 worth of USDC" means value "5". The host calculates token units from live prices. This does not mean exactly 5 USDC; never substitute it for a token-denominated quantity.
kindstringrequiredSpend a USD-denominated value of the input token.
Validation rules
- Exact value
"exact_input_value_usd"
valuestringrequiredThe USD value to spend, as a decimal string.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})(?:\\.\\d{1,18})?$"
Variant 3 · kind: exact_output_tokens
Receive an exact quantity of the output token. Scale the requested decimal digits using the verified output decimals to obtain amountRaw; reject excess fractional digits. The host calculates the required input. No floating-point arithmetic or bash.
kindstringrequiredReceive an exact amount of the output token.
Validation rules
- Exact value
"exact_output_tokens"
amountRawstringrequiredThe exact output amount, in the output token's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 4 · kind: all_of_input
kindstringrequiredSpend everything the agent wallet holds of the input asset.
Validation rules
- Exact value
"all_of_input"
Variant 5 · kind: fraction_of_input
kindstringrequiredSpend a fraction of the input asset.
Validation rules
- Exact value
"fraction_of_input"
bpsstringrequiredThe fraction to spend, in basis points of the input asset.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,4})$"
outputanyOfrequiredThe asset this action produces: pinned to one token, or left open.
Show attributes
The asset this action produces: pinned to one token, or left open.
anyOf · 2 variants
Variant 1 · object
pinnedobjectrequiredThe exact token this asset is pinned to.
Show attributes
The exact token this asset is pinned to.
tokenIdstringrequiredThe token's NEP-141 identifier.
Validation rules
- Pattern
"^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$"
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
Variant 2 · object
anybooleanrequiredAny token the agent wallet holds; the executor picks one at execution.
Validation rules
- Exact value
true
recipientobjectrequiredThe pinned destination this action pays.
Show attributes
The pinned destination this action pays.
chainstringrequiredWhich chain the destination address is on.
Validation rules
- Minimum length
1- Maximum length
32
addressstringrequiredThe destination address on that chain.
Validation rules
- Pattern
"^[\\x21-\\x7e]{1,128}$"
validUntilstring · date-timerequiredWhen this contract's authority expires.
Validation rules
- Format
"date-time"- Pattern
"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
maxExecutionsintegerrequiredHow many times this contract may be executed before it is exhausted.
Validation rules
- Minimum
1- Maximum
10000
boundsobjectrequiredThe value-loss and signature-lifetime limits every execution must respect.
Show attributes
The value-loss and signature-lifetime limits every execution must respect.
maxValueLossBpsstringrequiredThe most value an execution may give up to price movement and fees together, in basis points.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,4})$"
maxSignatureLifetimeSecondsintegerrequiredExplicit maximum lifetime of each released transfer signature, in seconds. 1Click confidential swaps require up to 259500 seconds (72 hours 5 minutes). This does not extend the short execution window or approval validity.
Validation rules
- Minimum
1- Maximum
259500
expiresAtstring · date-timeoptionalWhen the exact review ceases to authorize an execution claim.
Validation rules
- Format
"date-time"- Pattern
"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
executionRestrictionstringoptionalThe immutable restriction that prevents automatic signing under this approval.
Validation rules
- Exact value
"signing_disabled"
occurrenceIdstringoptionalThe actual automation occurrence that requested this operation, when present; never a substitute for its operation ID.
Validation rules
- Minimum length
1- Maximum length
160
legsarrayrequiredEvery leg of the frozen plan in plan order, including untouched legs without claims or receipts; empty before a plan exists.
Show attributes
Every leg of the frozen plan in plan order, including untouched legs without claims or receipts; empty before a plan exists.
Validation rules
- Maximum items
16
Array items · object
indexintegerrequiredThis leg's position in the frozen plan, counting from zero.
Validation rules
- Minimum
0- Maximum
15
inputobjectoptionalThe frozen input asset and requested amount when that side was fixed; not measured spend.
Show attributes
The frozen input asset and requested amount when that side was fixed; not measured spend.
tokenIdstringrequiredThe asset's NEP-141 token id.
Validation rules
- Minimum length
1- Maximum length
256
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
amountRawstringoptionalThe amount, in the token's smallest unit, when it is known.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
outputobjectoptionalThe frozen output asset and requested amount when that side was fixed; not measured proceeds.
Show attributes
The frozen output asset and requested amount when that side was fixed; not measured proceeds.
tokenIdstringrequiredThe asset's NEP-141 token id.
Validation rules
- Minimum length
1- Maximum length
256
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
amountRawstringoptionalThe amount, in the token's smallest unit, when it is known.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
minimumOutputRawstringoptionalThe minimum output required by an exact-input leg, in the output asset's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
maximumInputRawstringoptionalThe maximum input permitted by an exact-output leg, in the input asset's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
stagestringoptionalThe stage derived from the persisted claim while it has no terminal receipt; absent for untouched planned legs.
Validation rules
- Allowed values
["quoting","signed","confirming","unresolved"]
legIdstring · uuidoptionalThe actual claim's durable ID; absent when this planned leg was never attempted.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
receiptoneOfoptionalThe retained terminal evidence for the actual leg; untouched planned legs have no receipt.
Show attributes
The retained terminal evidence for the actual leg; untouched planned legs have no receipt.
oneOf · 3 variants
Variant 1 · object
approvalIdstring · uuidrequiredThe approval's id.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
legIdstring · uuidrequiredWhich leg of the plan this receipt settles.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
indexintegerrequiredThis leg's position within the plan, counting from zero.
Validation rules
- Minimum
0- Maximum
15
operationIdstring · uuidoptionalThe durable financial request this evidence belongs to.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
occurrenceIdstringoptionalThe archived event's original identity, retained verbatim; current receipts use operationId.
Validation rules
- Minimum length
1- Maximum length
160
statestringrequiredThe leg settled: its output asset moved as planned.
Validation rules
- Exact value
"settled"
outputobjectrequiredWhat the leg produced.
Show attributes
What the leg produced.
tokenIdstringrequiredThe asset's NEP-141 token id.
Validation rules
- Minimum length
1- Maximum length
256
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
amountRawstringoptionalThe amount, in the token's smallest unit, when it is known.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 2 · object
approvalIdstring · uuidrequiredThe approval's id.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
legIdstring · uuidrequiredWhich leg of the plan this receipt settles.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
indexintegerrequiredThis leg's position within the plan, counting from zero.
Validation rules
- Minimum
0- Maximum
15
operationIdstring · uuidoptionalThe durable financial request this evidence belongs to.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
occurrenceIdstringoptionalThe archived event's original identity, retained verbatim; current receipts use operationId.
Validation rules
- Minimum length
1- Maximum length
160
statestringrequiredThe leg did not settle and its input asset was returned.
Validation rules
- Exact value
"refunded"
refundobjectrequiredWhat was returned.
Show attributes
What was returned.
tokenIdstringrequiredThe asset's NEP-141 token id.
Validation rules
- Minimum length
1- Maximum length
256
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
amountRawstringoptionalThe amount, in the token's smallest unit, when it is known.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 3 · object
approvalIdstring · uuidrequiredThe approval's id.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
legIdstring · uuidrequiredWhich leg of the plan this receipt settles.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
indexintegerrequiredThis leg's position within the plan, counting from zero.
Validation rules
- Minimum
0- Maximum
15
operationIdstring · uuidoptionalThe durable financial request this evidence belongs to.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
occurrenceIdstringoptionalThe archived event's original identity, retained verbatim; current receipts use operationId.
Validation rules
- Minimum length
1- Maximum length
160
statestringrequiredThe leg did not settle. Most reasons mean it never reached the provider; rejected means it did and was refused there — see reason.
Validation rules
- Exact value
"not_executed"
reasonstringoptionalWhy nothing executed: signing_disabled when automatic signing was off, signing_failed when signing itself failed, rejected when the provider refused the submission outright (it did reach the provider), expired when the leg's own signing/deposit window elapsed before a terminal fact arrived, or failed otherwise. Optional so receipts written before the reason was carried still parse.
Validation rules
- Allowed values
["signing_disabled","signing_failed","rejected","expired","failed"]
resultobjectoptionalThe persisted command outcome, updated in this read by conclusive receipts; absent while no outcome exists, including denied or expired preparation.
Show attributes
The persisted command outcome, updated in this read by conclusive receipts; absent while no outcome exists, including denied or expired preparation.
statusstringrequiredThe canonical financial outcome projected for display; refused requests appear as denied, pending is unresolved and partial means only part executed.
Validation rules
- Allowed values
["completed","failed","denied","unverified","pending","partial","no_trade","settled","refunded","not_executed"]
reasonstringoptionalPresent when automatic signing was disabled for the reported non-execution.
Validation rules
- Exact value
"signing_disabled"
messagestringoptionalThe host's fixed explanation for a refused request, when present; never raw provider text.
Validation rules
- Maximum length
280
legsarrayrequiredThe actual legs represented by this outcome; untouched planned legs are not fabricated as results.
Show attributes
The actual legs represented by this outcome; untouched planned legs are not fabricated as results.
Validation rules
- Maximum items
16
Array items · object
indexintegerrequiredThe reported leg's position in the frozen plan, counting from zero.
Validation rules
- Minimum
0- Maximum
15
statestringrequiredThe retained execution or settlement state for this reported leg.
Validation rules
- Allowed values
["claimed","signed","uncertain","settled","refunded","not_executed"]
runningbooleanrequiredTrue when the operation has an execution claim and no current outcome; it does not prove a process is still running.
endedbooleanrequiredTrue when no outcome is available and the operation is uncertain, denied or expired. Later receipts may resolve uncertainty; this does not assert that settlement is final.
conversationIdstring · uuidrequiredThe conversation in which the agent requested this financial operation.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
originoneOfrequiredThe conversation's retained origin, even if a user later continued an automation-created conversation.
Show attributes
The conversation's retained origin, even if a user later continued an automation-created conversation.
oneOf · 2 variants
Variant 1 · type: conversation
typestringrequiredAn ordinary user-started conversation.
Validation rules
- Exact value
"conversation"
Variant 2 · type: automation
typestringrequiredA conversation an automation created.
Validation rules
- Exact value
"automation"
automationIdstring · uuidrequiredThe automation that created this conversation.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
namestringrequiredThe automation's name at the time this conversation started.
Validation rules
- Minimum length
1- Maximum length
120
Variant 2 · object
keystringrequiredThe durable financial operation ID, stable across approval, execution and later receipts.
Validation rules
- Minimum length
1- Maximum length
200
titlestring or nullrequiredThe conversation's current title; null for an untitled conversation or a direct operation.
createdAtstring · date-timerequiredWhen the financial request was first persisted.
Validation rules
- Format
"date-time"- Pattern
"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
updatedAtstring · date-timerequiredThe latest request or claim creation, execution start, outcome report, signature or settlement timestamp retained for this operation.
Validation rules
- Format
"date-time"- Pattern
"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
approvalobjectoptionalThe request's exact human review, when one was required; absent when it uses standing consent or historical review provenance is unknown.
Show attributes
The request's exact human review, when one was required; absent when it uses standing consent or historical review provenance is unknown.
approvalIdstring · uuidrequiredThe exact single-use review bound to this financial request.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
statusstringrequiredThe recorded human decision, with overdue pending reviews shown as expired; approval alone does not prove execution.
Validation rules
- Allowed values
["pending","approved","denied","expired"]
contractoneOfoptionalThe exact reviewed financial terms, when retained and readable.
Show attributes
The exact reviewed financial terms, when retained and readable.
oneOf · 1 variants
Variant 1 · type: near_intents_transfer
typestringrequiredWhich contract template this is.
Validation rules
- Exact value
"near_intents_transfer"
actionsarrayrequiredThe actions this contract authorizes, executed in order.
Show attributes
The actions this contract authorizes, executed in order.
Validation rules
- Minimum items
1- Maximum items
16
Array items · oneOf
oneOf · 3 variants
Variant 1 · kind: swap
kindstringrequiredExchange one asset for another; custody never leaves the agent wallet.
Validation rules
- Exact value
"swap"
inputanyOfrequiredThe asset this action spends: pinned to one token, or any token the agent wallet holds.
Show attributes
The asset this action spends: pinned to one token, or any token the agent wallet holds.
anyOf · 2 variants
Variant 1 · object
pinnedobjectrequiredThe exact token this asset is pinned to.
Show attributes
The exact token this asset is pinned to.
tokenIdstringrequiredThe token's NEP-141 identifier.
Validation rules
- Pattern
"^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$"
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
Variant 2 · object
anybooleanrequiredAny token the agent wallet holds; the executor picks one at execution.
Validation rules
- Exact value
true
quantityoneOfrequiredHow much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it.
Show attributes
How much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it.
oneOf · 5 variants
Variant 1 · kind: exact_input_tokens
Spend an exact quantity of the input token, not its USD value. Exactly 5 USDC with verified input decimals 6 means amountRaw "5000000". Scale the requested decimal digits using the verified input decimals; reject excess fractional digits. No floating-point arithmetic or bash.
kindstringrequiredSpend an exact amount of the input token.
Validation rules
- Exact value
"exact_input_tokens"
amountRawstringrequiredThe exact input amount, in the input token's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 2 · kind: exact_input_value_usd
Spend a USD-denominated value of the input token: "$5 worth of USDC" means value "5". The host calculates token units from live prices. This does not mean exactly 5 USDC; never substitute it for a token-denominated quantity.
kindstringrequiredSpend a USD-denominated value of the input token.
Validation rules
- Exact value
"exact_input_value_usd"
valuestringrequiredThe USD value to spend, as a decimal string.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})(?:\\.\\d{1,18})?$"
Variant 3 · kind: exact_output_tokens
Receive an exact quantity of the output token. Scale the requested decimal digits using the verified output decimals to obtain amountRaw; reject excess fractional digits. The host calculates the required input. No floating-point arithmetic or bash.
kindstringrequiredReceive an exact amount of the output token.
Validation rules
- Exact value
"exact_output_tokens"
amountRawstringrequiredThe exact output amount, in the output token's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 4 · kind: all_of_input
kindstringrequiredSpend everything the agent wallet holds of the input asset.
Validation rules
- Exact value
"all_of_input"
Variant 5 · kind: fraction_of_input
kindstringrequiredSpend a fraction of the input asset.
Validation rules
- Exact value
"fraction_of_input"
bpsstringrequiredThe fraction to spend, in basis points of the input asset.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,4})$"
outputanyOfrequiredThe asset this action produces: pinned to one token, or left open.
Show attributes
The asset this action produces: pinned to one token, or left open.
anyOf · 2 variants
Variant 1 · object
pinnedobjectrequiredThe exact token this asset is pinned to.
Show attributes
The exact token this asset is pinned to.
tokenIdstringrequiredThe token's NEP-141 identifier.
Validation rules
- Pattern
"^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$"
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
Variant 2 · object
anybooleanrequiredAny token the agent wallet holds; the executor picks one at execution.
Validation rules
- Exact value
true
Variant 2 · kind: withdraw_to_owner
kindstringrequiredReturn an asset to the account that owns the agent wallet.
Validation rules
- Exact value
"withdraw_to_owner"
inputanyOfrequiredThe asset this action spends: pinned to one token, or any token the agent wallet holds.
Show attributes
The asset this action spends: pinned to one token, or any token the agent wallet holds.
anyOf · 2 variants
Variant 1 · object
pinnedobjectrequiredThe exact token this asset is pinned to.
Show attributes
The exact token this asset is pinned to.
tokenIdstringrequiredThe token's NEP-141 identifier.
Validation rules
- Pattern
"^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$"
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
Variant 2 · object
anybooleanrequiredAny token the agent wallet holds; the executor picks one at execution.
Validation rules
- Exact value
true
quantityoneOfrequiredHow much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it.
Show attributes
How much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it.
oneOf · 5 variants
Variant 1 · kind: exact_input_tokens
Spend an exact quantity of the input token, not its USD value. Exactly 5 USDC with verified input decimals 6 means amountRaw "5000000". Scale the requested decimal digits using the verified input decimals; reject excess fractional digits. No floating-point arithmetic or bash.
kindstringrequiredSpend an exact amount of the input token.
Validation rules
- Exact value
"exact_input_tokens"
amountRawstringrequiredThe exact input amount, in the input token's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 2 · kind: exact_input_value_usd
Spend a USD-denominated value of the input token: "$5 worth of USDC" means value "5". The host calculates token units from live prices. This does not mean exactly 5 USDC; never substitute it for a token-denominated quantity.
kindstringrequiredSpend a USD-denominated value of the input token.
Validation rules
- Exact value
"exact_input_value_usd"
valuestringrequiredThe USD value to spend, as a decimal string.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})(?:\\.\\d{1,18})?$"
Variant 3 · kind: exact_output_tokens
Receive an exact quantity of the output token. Scale the requested decimal digits using the verified output decimals to obtain amountRaw; reject excess fractional digits. The host calculates the required input. No floating-point arithmetic or bash.
kindstringrequiredReceive an exact amount of the output token.
Validation rules
- Exact value
"exact_output_tokens"
amountRawstringrequiredThe exact output amount, in the output token's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 4 · kind: all_of_input
kindstringrequiredSpend everything the agent wallet holds of the input asset.
Validation rules
- Exact value
"all_of_input"
Variant 5 · kind: fraction_of_input
kindstringrequiredSpend a fraction of the input asset.
Validation rules
- Exact value
"fraction_of_input"
bpsstringrequiredThe fraction to spend, in basis points of the input asset.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,4})$"
outputanyOfrequiredThe asset this action produces: pinned to one token, or left open.
Show attributes
The asset this action produces: pinned to one token, or left open.
anyOf · 2 variants
Variant 1 · object
pinnedobjectrequiredThe exact token this asset is pinned to.
Show attributes
The exact token this asset is pinned to.
tokenIdstringrequiredThe token's NEP-141 identifier.
Validation rules
- Pattern
"^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$"
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
Variant 2 · object
anybooleanrequiredAny token the agent wallet holds; the executor picks one at execution.
Validation rules
- Exact value
true
Variant 3 · kind: send
kindstringrequiredPay a pinned destination outside the agent wallet.
Validation rules
- Exact value
"send"
inputanyOfrequiredThe asset this action spends: pinned to one token, or any token the agent wallet holds.
Show attributes
The asset this action spends: pinned to one token, or any token the agent wallet holds.
anyOf · 2 variants
Variant 1 · object
pinnedobjectrequiredThe exact token this asset is pinned to.
Show attributes
The exact token this asset is pinned to.
tokenIdstringrequiredThe token's NEP-141 identifier.
Validation rules
- Pattern
"^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$"
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
Variant 2 · object
anybooleanrequiredAny token the agent wallet holds; the executor picks one at execution.
Validation rules
- Exact value
true
quantityoneOfrequiredHow much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it.
Show attributes
How much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it.
oneOf · 5 variants
Variant 1 · kind: exact_input_tokens
Spend an exact quantity of the input token, not its USD value. Exactly 5 USDC with verified input decimals 6 means amountRaw "5000000". Scale the requested decimal digits using the verified input decimals; reject excess fractional digits. No floating-point arithmetic or bash.
kindstringrequiredSpend an exact amount of the input token.
Validation rules
- Exact value
"exact_input_tokens"
amountRawstringrequiredThe exact input amount, in the input token's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 2 · kind: exact_input_value_usd
Spend a USD-denominated value of the input token: "$5 worth of USDC" means value "5". The host calculates token units from live prices. This does not mean exactly 5 USDC; never substitute it for a token-denominated quantity.
kindstringrequiredSpend a USD-denominated value of the input token.
Validation rules
- Exact value
"exact_input_value_usd"
valuestringrequiredThe USD value to spend, as a decimal string.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})(?:\\.\\d{1,18})?$"
Variant 3 · kind: exact_output_tokens
Receive an exact quantity of the output token. Scale the requested decimal digits using the verified output decimals to obtain amountRaw; reject excess fractional digits. The host calculates the required input. No floating-point arithmetic or bash.
kindstringrequiredReceive an exact amount of the output token.
Validation rules
- Exact value
"exact_output_tokens"
amountRawstringrequiredThe exact output amount, in the output token's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 4 · kind: all_of_input
kindstringrequiredSpend everything the agent wallet holds of the input asset.
Validation rules
- Exact value
"all_of_input"
Variant 5 · kind: fraction_of_input
kindstringrequiredSpend a fraction of the input asset.
Validation rules
- Exact value
"fraction_of_input"
bpsstringrequiredThe fraction to spend, in basis points of the input asset.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,4})$"
outputanyOfrequiredThe asset this action produces: pinned to one token, or left open.
Show attributes
The asset this action produces: pinned to one token, or left open.
anyOf · 2 variants
Variant 1 · object
pinnedobjectrequiredThe exact token this asset is pinned to.
Show attributes
The exact token this asset is pinned to.
tokenIdstringrequiredThe token's NEP-141 identifier.
Validation rules
- Pattern
"^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$"
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
Variant 2 · object
anybooleanrequiredAny token the agent wallet holds; the executor picks one at execution.
Validation rules
- Exact value
true
recipientobjectrequiredThe pinned destination this action pays.
Show attributes
The pinned destination this action pays.
chainstringrequiredWhich chain the destination address is on.
Validation rules
- Minimum length
1- Maximum length
32
addressstringrequiredThe destination address on that chain.
Validation rules
- Pattern
"^[\\x21-\\x7e]{1,128}$"
validUntilstring · date-timerequiredWhen this contract's authority expires.
Validation rules
- Format
"date-time"- Pattern
"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
maxExecutionsintegerrequiredHow many times this contract may be executed before it is exhausted.
Validation rules
- Minimum
1- Maximum
10000
boundsobjectrequiredThe value-loss and signature-lifetime limits every execution must respect.
Show attributes
The value-loss and signature-lifetime limits every execution must respect.
maxValueLossBpsstringrequiredThe most value an execution may give up to price movement and fees together, in basis points.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,4})$"
maxSignatureLifetimeSecondsintegerrequiredExplicit maximum lifetime of each released transfer signature, in seconds. 1Click confidential swaps require up to 259500 seconds (72 hours 5 minutes). This does not extend the short execution window or approval validity.
Validation rules
- Minimum
1- Maximum
259500
expiresAtstring · date-timeoptionalWhen the exact review ceases to authorize an execution claim.
Validation rules
- Format
"date-time"- Pattern
"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
executionRestrictionstringoptionalThe immutable restriction that prevents automatic signing under this approval.
Validation rules
- Exact value
"signing_disabled"
occurrenceIdstringoptionalThe actual automation occurrence that requested this operation, when present; never a substitute for its operation ID.
Validation rules
- Minimum length
1- Maximum length
160
legsarrayrequiredEvery leg of the frozen plan in plan order, including untouched legs without claims or receipts; empty before a plan exists.
Show attributes
Every leg of the frozen plan in plan order, including untouched legs without claims or receipts; empty before a plan exists.
Validation rules
- Maximum items
16
Array items · object
indexintegerrequiredThis leg's position in the frozen plan, counting from zero.
Validation rules
- Minimum
0- Maximum
15
inputobjectoptionalThe frozen input asset and requested amount when that side was fixed; not measured spend.
Show attributes
The frozen input asset and requested amount when that side was fixed; not measured spend.
tokenIdstringrequiredThe asset's NEP-141 token id.
Validation rules
- Minimum length
1- Maximum length
256
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
amountRawstringoptionalThe amount, in the token's smallest unit, when it is known.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
outputobjectoptionalThe frozen output asset and requested amount when that side was fixed; not measured proceeds.
Show attributes
The frozen output asset and requested amount when that side was fixed; not measured proceeds.
tokenIdstringrequiredThe asset's NEP-141 token id.
Validation rules
- Minimum length
1- Maximum length
256
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
amountRawstringoptionalThe amount, in the token's smallest unit, when it is known.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
minimumOutputRawstringoptionalThe minimum output required by an exact-input leg, in the output asset's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
maximumInputRawstringoptionalThe maximum input permitted by an exact-output leg, in the input asset's smallest unit.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
stagestringoptionalThe stage derived from the persisted claim while it has no terminal receipt; absent for untouched planned legs.
Validation rules
- Allowed values
["quoting","signed","confirming","unresolved"]
legIdstring · uuidoptionalThe actual claim's durable ID; absent when this planned leg was never attempted.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
receiptoneOfoptionalThe retained terminal evidence for the actual leg; untouched planned legs have no receipt.
Show attributes
The retained terminal evidence for the actual leg; untouched planned legs have no receipt.
oneOf · 3 variants
Variant 1 · object
approvalIdstring · uuidrequiredThe approval's id.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
legIdstring · uuidrequiredWhich leg of the plan this receipt settles.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
indexintegerrequiredThis leg's position within the plan, counting from zero.
Validation rules
- Minimum
0- Maximum
15
operationIdstring · uuidoptionalThe durable financial request this evidence belongs to.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
occurrenceIdstringoptionalThe archived event's original identity, retained verbatim; current receipts use operationId.
Validation rules
- Minimum length
1- Maximum length
160
statestringrequiredThe leg settled: its output asset moved as planned.
Validation rules
- Exact value
"settled"
outputobjectrequiredWhat the leg produced.
Show attributes
What the leg produced.
tokenIdstringrequiredThe asset's NEP-141 token id.
Validation rules
- Minimum length
1- Maximum length
256
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
amountRawstringoptionalThe amount, in the token's smallest unit, when it is known.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 2 · object
approvalIdstring · uuidrequiredThe approval's id.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
legIdstring · uuidrequiredWhich leg of the plan this receipt settles.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
indexintegerrequiredThis leg's position within the plan, counting from zero.
Validation rules
- Minimum
0- Maximum
15
operationIdstring · uuidoptionalThe durable financial request this evidence belongs to.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
occurrenceIdstringoptionalThe archived event's original identity, retained verbatim; current receipts use operationId.
Validation rules
- Minimum length
1- Maximum length
160
statestringrequiredThe leg did not settle and its input asset was returned.
Validation rules
- Exact value
"refunded"
refundobjectrequiredWhat was returned.
Show attributes
What was returned.
tokenIdstringrequiredThe asset's NEP-141 token id.
Validation rules
- Minimum length
1- Maximum length
256
decimalsintegerrequiredHow many decimal places the token's smallest unit represents.
Validation rules
- Minimum
0- Maximum
38
amountRawstringoptionalThe amount, in the token's smallest unit, when it is known.
Validation rules
- Pattern
"^(0|[1-9]\\d{0,38})$"
Variant 3 · object
approvalIdstring · uuidrequiredThe approval's id.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
legIdstring · uuidrequiredWhich leg of the plan this receipt settles.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
indexintegerrequiredThis leg's position within the plan, counting from zero.
Validation rules
- Minimum
0- Maximum
15
operationIdstring · uuidoptionalThe durable financial request this evidence belongs to.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
occurrenceIdstringoptionalThe archived event's original identity, retained verbatim; current receipts use operationId.
Validation rules
- Minimum length
1- Maximum length
160
statestringrequiredThe leg did not settle. Most reasons mean it never reached the provider; rejected means it did and was refused there — see reason.
Validation rules
- Exact value
"not_executed"
reasonstringoptionalWhy nothing executed: signing_disabled when automatic signing was off, signing_failed when signing itself failed, rejected when the provider refused the submission outright (it did reach the provider), expired when the leg's own signing/deposit window elapsed before a terminal fact arrived, or failed otherwise. Optional so receipts written before the reason was carried still parse.
Validation rules
- Allowed values
["signing_disabled","signing_failed","rejected","expired","failed"]
resultobjectoptionalThe persisted command outcome, updated in this read by conclusive receipts; absent while no outcome exists, including denied or expired preparation.
Show attributes
The persisted command outcome, updated in this read by conclusive receipts; absent while no outcome exists, including denied or expired preparation.
statusstringrequiredThe canonical financial outcome projected for display; refused requests appear as denied, pending is unresolved and partial means only part executed.
Validation rules
- Allowed values
["completed","failed","denied","unverified","pending","partial","no_trade","settled","refunded","not_executed"]
reasonstringoptionalPresent when automatic signing was disabled for the reported non-execution.
Validation rules
- Exact value
"signing_disabled"
messagestringoptionalThe host's fixed explanation for a refused request, when present; never raw provider text.
Validation rules
- Maximum length
280
legsarrayrequiredThe actual legs represented by this outcome; untouched planned legs are not fabricated as results.
Show attributes
The actual legs represented by this outcome; untouched planned legs are not fabricated as results.
Validation rules
- Maximum items
16
Array items · object
indexintegerrequiredThe reported leg's position in the frozen plan, counting from zero.
Validation rules
- Minimum
0- Maximum
15
statestringrequiredThe retained execution or settlement state for this reported leg.
Validation rules
- Allowed values
["claimed","signed","uncertain","settled","refunded","not_executed"]
runningbooleanrequiredTrue when the operation has an execution claim and no current outcome; it does not prove a process is still running.
endedbooleanrequiredTrue when no outcome is available and the operation is uncertain, denied or expired. Later receipts may resolve uncertainty; this does not assert that settlement is final.
conversationIdnullrequiredNull because this financial request was made directly, without a conversation or agent run.
originobjectrequiredThe direct financial operation that owns this activity.
Show attributes
The direct financial operation that owns this activity.
typestringrequiredA direct financial request with no conversation or agent run.
Validation rules
- Exact value
"operation"
operationIdstring · uuidrequiredThe durable financial operation this activity belongs to.
Validation rules
- Format
"uuid"- Pattern
"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
nextCursorstring or nullrequiredThe opaque cursor for the next page of financial requests, or null at the end.
pendingApprovalsintegerrequiredThe caller's unexpired pending approvals across all conversations and direct operations.
Validation rules
- Minimum
0- Maximum
9007199254740991
400 The request could not be read as this operation expects.
The request could not be read as this operation expects.
invalid_input— the body or query failed validation;issuesnames each fieldinvalid_cursor— thecursoris not one this list minted
application/problem+json · object
RFC 9457 problem details: what every error response carries. Never a provider's message, a query or a stack.
typestringrequiredThe kind of problem as a URN, urn:fin:error:<kind>; stable, compare against it
titlestringrequiredThe kind's human title, for logs; never parse it
statusintegerrequiredThe HTTP status, repeated in the body
Validation rules
- Minimum
400- Maximum
599
reasonstringoptionalThe machine-readable why. One of:
run_active(409) — a run already holds this conversationbudget_exhausted(409) — the user's spend headroom is gone, or an operator froze itapproval_not_pending(409) — the approval was already decided or has expired, or its id does not exist or belongs to a different conversationexecution_capacity(409) — no execution capacity is free right now;retryablesays whether to try againexecution_unavailable(409) — the execution engine could not take the workstop_pending(409) — a stop is already in progress and its cleanup is not yet confirmedautomation_changed(409) — therevisionsent is stale; reload the automationautomation_held(409) — an operator holds the automation; it fires again when releasedautomation_invalid(409) — the automation's definition cannot run as writtenautomation_completed(409) — the automation has finished for good and cannot fire againautomation_limit(409) — the user already has as many automations as the deployment allowsprofile_unknown_tool(409) — the run profile names a tool this deployment does not havedeployment_paused(409) — an operator paused a deployment control; nothing was admitted or firedrun_not_active(409) — the run named in the path is not the conversation's live runwithdrawal_changed(409) — the withdrawal cannot be prepared or confirmed as asked: the balance no longer covers it, its terms changed or expired, or it is already in progresscredential_expired(401) — the user token has expired; obtain a fresh oneaccount_disabled(403) — an operator disabled the accountaccount_not_provisioned(412) — the identity is verified but has no account yet; callusers.ensurefirstprovider_unavailable(503) — an external provider the call depends on did not answerengine_unavailable(503) — the execution engine did not answerinvalid_input(400) — the body or query failed validation;issuesnames each fieldinternal(500) — a fault on our side; quoterequestIdwhen reporting itpartner_key_required(401) — noX-Api-Keyheader was sentpartner_key_invalid(401) — theX-Api-Keyis unknown or revokedsubject_mismatch(403) — the{userId}in the path is not the token's userorigin_rejected(403) — a browserOriginother than the configured web originpermission_required(403) — the operator credential lacks the scope this call needsrate_limited(429) — the per-key or per-user limit is spent; honourRetry-Afterstream_capacity(429) — no stream socket is free on this replica or for this user; honourRetry-Afterinvalid_cursor(400) — thecursoris not one this list minted
Validation rules
- Allowed values
["run_active","budget_exhausted","approval_not_pending","execution_capacity","execution_unavailable","stop_pending","automation_changed","automation_held","automation_invalid","automation_completed","automation_limit","profile_unknown_tool","deployment_paused","run_not_active","withdrawal_changed","credential_expired","account_disabled","account_not_provisioned","provider_unavailable","engine_unavailable","invalid_input","internal","partner_key_required","partner_key_invalid","subject_mismatch","origin_rejected","permission_required","rate_limited","stream_capacity","invalid_cursor"]
requestIdstringrequiredThe id Fin used for this request; quote it when reporting a problem
retryablebooleanrequiredWhether repeating the same request later can succeed without changing it
detailstringoptionalOnly on invalid_input: which part of the request failed validation
issuesarrayoptionalOnly on invalid_input: one entry per failing field
Show attributes
Only on invalid_input: one entry per failing field
Array items · object
pathstringrequiredThe JSON pointer of the failing field; empty for the root object
messagestringrequiredWhy the field failed
401 A credential is missing, invalid or expired.
A credential is missing, invalid or expired.
partner_key_required— noX-Api-Keyheader was sentpartner_key_invalid— theX-Api-Keyis unknown or revokedcredential_expired— the user token has expired; obtain a fresh one
application/problem+json · object
RFC 9457 problem details: what every error response carries. Never a provider's message, a query or a stack.
typestringrequiredThe kind of problem as a URN, urn:fin:error:<kind>; stable, compare against it
titlestringrequiredThe kind's human title, for logs; never parse it
statusintegerrequiredThe HTTP status, repeated in the body
Validation rules
- Minimum
400- Maximum
599
reasonstringoptionalThe machine-readable why. One of:
run_active(409) — a run already holds this conversationbudget_exhausted(409) — the user's spend headroom is gone, or an operator froze itapproval_not_pending(409) — the approval was already decided or has expired, or its id does not exist or belongs to a different conversationexecution_capacity(409) — no execution capacity is free right now;retryablesays whether to try againexecution_unavailable(409) — the execution engine could not take the workstop_pending(409) — a stop is already in progress and its cleanup is not yet confirmedautomation_changed(409) — therevisionsent is stale; reload the automationautomation_held(409) — an operator holds the automation; it fires again when releasedautomation_invalid(409) — the automation's definition cannot run as writtenautomation_completed(409) — the automation has finished for good and cannot fire againautomation_limit(409) — the user already has as many automations as the deployment allowsprofile_unknown_tool(409) — the run profile names a tool this deployment does not havedeployment_paused(409) — an operator paused a deployment control; nothing was admitted or firedrun_not_active(409) — the run named in the path is not the conversation's live runwithdrawal_changed(409) — the withdrawal cannot be prepared or confirmed as asked: the balance no longer covers it, its terms changed or expired, or it is already in progresscredential_expired(401) — the user token has expired; obtain a fresh oneaccount_disabled(403) — an operator disabled the accountaccount_not_provisioned(412) — the identity is verified but has no account yet; callusers.ensurefirstprovider_unavailable(503) — an external provider the call depends on did not answerengine_unavailable(503) — the execution engine did not answerinvalid_input(400) — the body or query failed validation;issuesnames each fieldinternal(500) — a fault on our side; quoterequestIdwhen reporting itpartner_key_required(401) — noX-Api-Keyheader was sentpartner_key_invalid(401) — theX-Api-Keyis unknown or revokedsubject_mismatch(403) — the{userId}in the path is not the token's userorigin_rejected(403) — a browserOriginother than the configured web originpermission_required(403) — the operator credential lacks the scope this call needsrate_limited(429) — the per-key or per-user limit is spent; honourRetry-Afterstream_capacity(429) — no stream socket is free on this replica or for this user; honourRetry-Afterinvalid_cursor(400) — thecursoris not one this list minted
Validation rules
- Allowed values
["run_active","budget_exhausted","approval_not_pending","execution_capacity","execution_unavailable","stop_pending","automation_changed","automation_held","automation_invalid","automation_completed","automation_limit","profile_unknown_tool","deployment_paused","run_not_active","withdrawal_changed","credential_expired","account_disabled","account_not_provisioned","provider_unavailable","engine_unavailable","invalid_input","internal","partner_key_required","partner_key_invalid","subject_mismatch","origin_rejected","permission_required","rate_limited","stream_capacity","invalid_cursor"]
requestIdstringrequiredThe id Fin used for this request; quote it when reporting a problem
retryablebooleanrequiredWhether repeating the same request later can succeed without changing it
detailstringoptionalOnly on invalid_input: which part of the request failed validation
issuesarrayoptionalOnly on invalid_input: one entry per failing field
Show attributes
Only on invalid_input: one entry per failing field
Array items · object
pathstringrequiredThe JSON pointer of the failing field; empty for the root object
messagestringrequiredWhy the field failed
403 The credentials are valid but may not do this.
The credentials are valid but may not do this.
subject_mismatch— the{userId}in the path is not the token's useraccount_disabled— an operator disabled the accountorigin_rejected— a browserOriginother than the configured web origin
application/problem+json · object
RFC 9457 problem details: what every error response carries. Never a provider's message, a query or a stack.
typestringrequiredThe kind of problem as a URN, urn:fin:error:<kind>; stable, compare against it
titlestringrequiredThe kind's human title, for logs; never parse it
statusintegerrequiredThe HTTP status, repeated in the body
Validation rules
- Minimum
400- Maximum
599
reasonstringoptionalThe machine-readable why. One of:
run_active(409) — a run already holds this conversationbudget_exhausted(409) — the user's spend headroom is gone, or an operator froze itapproval_not_pending(409) — the approval was already decided or has expired, or its id does not exist or belongs to a different conversationexecution_capacity(409) — no execution capacity is free right now;retryablesays whether to try againexecution_unavailable(409) — the execution engine could not take the workstop_pending(409) — a stop is already in progress and its cleanup is not yet confirmedautomation_changed(409) — therevisionsent is stale; reload the automationautomation_held(409) — an operator holds the automation; it fires again when releasedautomation_invalid(409) — the automation's definition cannot run as writtenautomation_completed(409) — the automation has finished for good and cannot fire againautomation_limit(409) — the user already has as many automations as the deployment allowsprofile_unknown_tool(409) — the run profile names a tool this deployment does not havedeployment_paused(409) — an operator paused a deployment control; nothing was admitted or firedrun_not_active(409) — the run named in the path is not the conversation's live runwithdrawal_changed(409) — the withdrawal cannot be prepared or confirmed as asked: the balance no longer covers it, its terms changed or expired, or it is already in progresscredential_expired(401) — the user token has expired; obtain a fresh oneaccount_disabled(403) — an operator disabled the accountaccount_not_provisioned(412) — the identity is verified but has no account yet; callusers.ensurefirstprovider_unavailable(503) — an external provider the call depends on did not answerengine_unavailable(503) — the execution engine did not answerinvalid_input(400) — the body or query failed validation;issuesnames each fieldinternal(500) — a fault on our side; quoterequestIdwhen reporting itpartner_key_required(401) — noX-Api-Keyheader was sentpartner_key_invalid(401) — theX-Api-Keyis unknown or revokedsubject_mismatch(403) — the{userId}in the path is not the token's userorigin_rejected(403) — a browserOriginother than the configured web originpermission_required(403) — the operator credential lacks the scope this call needsrate_limited(429) — the per-key or per-user limit is spent; honourRetry-Afterstream_capacity(429) — no stream socket is free on this replica or for this user; honourRetry-Afterinvalid_cursor(400) — thecursoris not one this list minted
Validation rules
- Allowed values
["run_active","budget_exhausted","approval_not_pending","execution_capacity","execution_unavailable","stop_pending","automation_changed","automation_held","automation_invalid","automation_completed","automation_limit","profile_unknown_tool","deployment_paused","run_not_active","withdrawal_changed","credential_expired","account_disabled","account_not_provisioned","provider_unavailable","engine_unavailable","invalid_input","internal","partner_key_required","partner_key_invalid","subject_mismatch","origin_rejected","permission_required","rate_limited","stream_capacity","invalid_cursor"]
requestIdstringrequiredThe id Fin used for this request; quote it when reporting a problem
retryablebooleanrequiredWhether repeating the same request later can succeed without changing it
detailstringoptionalOnly on invalid_input: which part of the request failed validation
issuesarrayoptionalOnly on invalid_input: one entry per failing field
Show attributes
Only on invalid_input: one entry per failing field
Array items · object
pathstringrequiredThe JSON pointer of the failing field; empty for the root object
messagestringrequiredWhy the field failed
404 The resource is missing, belongs to someone else, or its id is malformed: all three answer alike.
The resource is missing, belongs to someone else, or its id is malformed: all three answer alike.
application/problem+json · object
RFC 9457 problem details: what every error response carries. Never a provider's message, a query or a stack.
typestringrequiredThe kind of problem as a URN, urn:fin:error:<kind>; stable, compare against it
titlestringrequiredThe kind's human title, for logs; never parse it
statusintegerrequiredThe HTTP status, repeated in the body
Validation rules
- Minimum
400- Maximum
599
reasonstringoptionalThe machine-readable why. One of:
run_active(409) — a run already holds this conversationbudget_exhausted(409) — the user's spend headroom is gone, or an operator froze itapproval_not_pending(409) — the approval was already decided or has expired, or its id does not exist or belongs to a different conversationexecution_capacity(409) — no execution capacity is free right now;retryablesays whether to try againexecution_unavailable(409) — the execution engine could not take the workstop_pending(409) — a stop is already in progress and its cleanup is not yet confirmedautomation_changed(409) — therevisionsent is stale; reload the automationautomation_held(409) — an operator holds the automation; it fires again when releasedautomation_invalid(409) — the automation's definition cannot run as writtenautomation_completed(409) — the automation has finished for good and cannot fire againautomation_limit(409) — the user already has as many automations as the deployment allowsprofile_unknown_tool(409) — the run profile names a tool this deployment does not havedeployment_paused(409) — an operator paused a deployment control; nothing was admitted or firedrun_not_active(409) — the run named in the path is not the conversation's live runwithdrawal_changed(409) — the withdrawal cannot be prepared or confirmed as asked: the balance no longer covers it, its terms changed or expired, or it is already in progresscredential_expired(401) — the user token has expired; obtain a fresh oneaccount_disabled(403) — an operator disabled the accountaccount_not_provisioned(412) — the identity is verified but has no account yet; callusers.ensurefirstprovider_unavailable(503) — an external provider the call depends on did not answerengine_unavailable(503) — the execution engine did not answerinvalid_input(400) — the body or query failed validation;issuesnames each fieldinternal(500) — a fault on our side; quoterequestIdwhen reporting itpartner_key_required(401) — noX-Api-Keyheader was sentpartner_key_invalid(401) — theX-Api-Keyis unknown or revokedsubject_mismatch(403) — the{userId}in the path is not the token's userorigin_rejected(403) — a browserOriginother than the configured web originpermission_required(403) — the operator credential lacks the scope this call needsrate_limited(429) — the per-key or per-user limit is spent; honourRetry-Afterstream_capacity(429) — no stream socket is free on this replica or for this user; honourRetry-Afterinvalid_cursor(400) — thecursoris not one this list minted
Validation rules
- Allowed values
["run_active","budget_exhausted","approval_not_pending","execution_capacity","execution_unavailable","stop_pending","automation_changed","automation_held","automation_invalid","automation_completed","automation_limit","profile_unknown_tool","deployment_paused","run_not_active","withdrawal_changed","credential_expired","account_disabled","account_not_provisioned","provider_unavailable","engine_unavailable","invalid_input","internal","partner_key_required","partner_key_invalid","subject_mismatch","origin_rejected","permission_required","rate_limited","stream_capacity","invalid_cursor"]
requestIdstringrequiredThe id Fin used for this request; quote it when reporting a problem
retryablebooleanrequiredWhether repeating the same request later can succeed without changing it
detailstringoptionalOnly on invalid_input: which part of the request failed validation
issuesarrayoptionalOnly on invalid_input: one entry per failing field
Show attributes
Only on invalid_input: one entry per failing field
Array items · object
pathstringrequiredThe JSON pointer of the failing field; empty for the root object
messagestringrequiredWhy the field failed
412 The identity is verified but has no account yet.
The identity is verified but has no account yet.
account_not_provisioned— the identity is verified but has no account yet; callusers.ensurefirst
application/problem+json · object
RFC 9457 problem details: what every error response carries. Never a provider's message, a query or a stack.
typestringrequiredThe kind of problem as a URN, urn:fin:error:<kind>; stable, compare against it
titlestringrequiredThe kind's human title, for logs; never parse it
statusintegerrequiredThe HTTP status, repeated in the body
Validation rules
- Minimum
400- Maximum
599
reasonstringoptionalThe machine-readable why. One of:
run_active(409) — a run already holds this conversationbudget_exhausted(409) — the user's spend headroom is gone, or an operator froze itapproval_not_pending(409) — the approval was already decided or has expired, or its id does not exist or belongs to a different conversationexecution_capacity(409) — no execution capacity is free right now;retryablesays whether to try againexecution_unavailable(409) — the execution engine could not take the workstop_pending(409) — a stop is already in progress and its cleanup is not yet confirmedautomation_changed(409) — therevisionsent is stale; reload the automationautomation_held(409) — an operator holds the automation; it fires again when releasedautomation_invalid(409) — the automation's definition cannot run as writtenautomation_completed(409) — the automation has finished for good and cannot fire againautomation_limit(409) — the user already has as many automations as the deployment allowsprofile_unknown_tool(409) — the run profile names a tool this deployment does not havedeployment_paused(409) — an operator paused a deployment control; nothing was admitted or firedrun_not_active(409) — the run named in the path is not the conversation's live runwithdrawal_changed(409) — the withdrawal cannot be prepared or confirmed as asked: the balance no longer covers it, its terms changed or expired, or it is already in progresscredential_expired(401) — the user token has expired; obtain a fresh oneaccount_disabled(403) — an operator disabled the accountaccount_not_provisioned(412) — the identity is verified but has no account yet; callusers.ensurefirstprovider_unavailable(503) — an external provider the call depends on did not answerengine_unavailable(503) — the execution engine did not answerinvalid_input(400) — the body or query failed validation;issuesnames each fieldinternal(500) — a fault on our side; quoterequestIdwhen reporting itpartner_key_required(401) — noX-Api-Keyheader was sentpartner_key_invalid(401) — theX-Api-Keyis unknown or revokedsubject_mismatch(403) — the{userId}in the path is not the token's userorigin_rejected(403) — a browserOriginother than the configured web originpermission_required(403) — the operator credential lacks the scope this call needsrate_limited(429) — the per-key or per-user limit is spent; honourRetry-Afterstream_capacity(429) — no stream socket is free on this replica or for this user; honourRetry-Afterinvalid_cursor(400) — thecursoris not one this list minted
Validation rules
- Allowed values
["run_active","budget_exhausted","approval_not_pending","execution_capacity","execution_unavailable","stop_pending","automation_changed","automation_held","automation_invalid","automation_completed","automation_limit","profile_unknown_tool","deployment_paused","run_not_active","withdrawal_changed","credential_expired","account_disabled","account_not_provisioned","provider_unavailable","engine_unavailable","invalid_input","internal","partner_key_required","partner_key_invalid","subject_mismatch","origin_rejected","permission_required","rate_limited","stream_capacity","invalid_cursor"]
requestIdstringrequiredThe id Fin used for this request; quote it when reporting a problem
retryablebooleanrequiredWhether repeating the same request later can succeed without changing it
detailstringoptionalOnly on invalid_input: which part of the request failed validation
issuesarrayoptionalOnly on invalid_input: one entry per failing field
Show attributes
Only on invalid_input: one entry per failing field
Array items · object
pathstringrequiredThe JSON pointer of the failing field; empty for the root object
messagestringrequiredWhy the field failed
429 A limiter refused the request; honour `Retry-After`.
A limiter refused the request; honour Retry-After.
rate_limited— the per-key or per-user limit is spent; honourRetry-After
application/problem+json · object
RFC 9457 problem details: what every error response carries. Never a provider's message, a query or a stack.
typestringrequiredThe kind of problem as a URN, urn:fin:error:<kind>; stable, compare against it
titlestringrequiredThe kind's human title, for logs; never parse it
statusintegerrequiredThe HTTP status, repeated in the body
Validation rules
- Minimum
400- Maximum
599
reasonstringoptionalThe machine-readable why. One of:
run_active(409) — a run already holds this conversationbudget_exhausted(409) — the user's spend headroom is gone, or an operator froze itapproval_not_pending(409) — the approval was already decided or has expired, or its id does not exist or belongs to a different conversationexecution_capacity(409) — no execution capacity is free right now;retryablesays whether to try againexecution_unavailable(409) — the execution engine could not take the workstop_pending(409) — a stop is already in progress and its cleanup is not yet confirmedautomation_changed(409) — therevisionsent is stale; reload the automationautomation_held(409) — an operator holds the automation; it fires again when releasedautomation_invalid(409) — the automation's definition cannot run as writtenautomation_completed(409) — the automation has finished for good and cannot fire againautomation_limit(409) — the user already has as many automations as the deployment allowsprofile_unknown_tool(409) — the run profile names a tool this deployment does not havedeployment_paused(409) — an operator paused a deployment control; nothing was admitted or firedrun_not_active(409) — the run named in the path is not the conversation's live runwithdrawal_changed(409) — the withdrawal cannot be prepared or confirmed as asked: the balance no longer covers it, its terms changed or expired, or it is already in progresscredential_expired(401) — the user token has expired; obtain a fresh oneaccount_disabled(403) — an operator disabled the accountaccount_not_provisioned(412) — the identity is verified but has no account yet; callusers.ensurefirstprovider_unavailable(503) — an external provider the call depends on did not answerengine_unavailable(503) — the execution engine did not answerinvalid_input(400) — the body or query failed validation;issuesnames each fieldinternal(500) — a fault on our side; quoterequestIdwhen reporting itpartner_key_required(401) — noX-Api-Keyheader was sentpartner_key_invalid(401) — theX-Api-Keyis unknown or revokedsubject_mismatch(403) — the{userId}in the path is not the token's userorigin_rejected(403) — a browserOriginother than the configured web originpermission_required(403) — the operator credential lacks the scope this call needsrate_limited(429) — the per-key or per-user limit is spent; honourRetry-Afterstream_capacity(429) — no stream socket is free on this replica or for this user; honourRetry-Afterinvalid_cursor(400) — thecursoris not one this list minted
Validation rules
- Allowed values
["run_active","budget_exhausted","approval_not_pending","execution_capacity","execution_unavailable","stop_pending","automation_changed","automation_held","automation_invalid","automation_completed","automation_limit","profile_unknown_tool","deployment_paused","run_not_active","withdrawal_changed","credential_expired","account_disabled","account_not_provisioned","provider_unavailable","engine_unavailable","invalid_input","internal","partner_key_required","partner_key_invalid","subject_mismatch","origin_rejected","permission_required","rate_limited","stream_capacity","invalid_cursor"]
requestIdstringrequiredThe id Fin used for this request; quote it when reporting a problem
retryablebooleanrequiredWhether repeating the same request later can succeed without changing it
detailstringoptionalOnly on invalid_input: which part of the request failed validation
issuesarrayoptionalOnly on invalid_input: one entry per failing field
Show attributes
Only on invalid_input: one entry per failing field
Array items · object
pathstringrequiredThe JSON pointer of the failing field; empty for the root object
messagestringrequiredWhy the field failed
500 A fault on our side; quote `requestId` when reporting it.
A fault on our side; quote requestId when reporting it.
internal— a fault on our side; quoterequestIdwhen reporting it
application/problem+json · object
RFC 9457 problem details: what every error response carries. Never a provider's message, a query or a stack.
typestringrequiredThe kind of problem as a URN, urn:fin:error:<kind>; stable, compare against it
titlestringrequiredThe kind's human title, for logs; never parse it
statusintegerrequiredThe HTTP status, repeated in the body
Validation rules
- Minimum
400- Maximum
599
reasonstringoptionalThe machine-readable why. One of:
run_active(409) — a run already holds this conversationbudget_exhausted(409) — the user's spend headroom is gone, or an operator froze itapproval_not_pending(409) — the approval was already decided or has expired, or its id does not exist or belongs to a different conversationexecution_capacity(409) — no execution capacity is free right now;retryablesays whether to try againexecution_unavailable(409) — the execution engine could not take the workstop_pending(409) — a stop is already in progress and its cleanup is not yet confirmedautomation_changed(409) — therevisionsent is stale; reload the automationautomation_held(409) — an operator holds the automation; it fires again when releasedautomation_invalid(409) — the automation's definition cannot run as writtenautomation_completed(409) — the automation has finished for good and cannot fire againautomation_limit(409) — the user already has as many automations as the deployment allowsprofile_unknown_tool(409) — the run profile names a tool this deployment does not havedeployment_paused(409) — an operator paused a deployment control; nothing was admitted or firedrun_not_active(409) — the run named in the path is not the conversation's live runwithdrawal_changed(409) — the withdrawal cannot be prepared or confirmed as asked: the balance no longer covers it, its terms changed or expired, or it is already in progresscredential_expired(401) — the user token has expired; obtain a fresh oneaccount_disabled(403) — an operator disabled the accountaccount_not_provisioned(412) — the identity is verified but has no account yet; callusers.ensurefirstprovider_unavailable(503) — an external provider the call depends on did not answerengine_unavailable(503) — the execution engine did not answerinvalid_input(400) — the body or query failed validation;issuesnames each fieldinternal(500) — a fault on our side; quoterequestIdwhen reporting itpartner_key_required(401) — noX-Api-Keyheader was sentpartner_key_invalid(401) — theX-Api-Keyis unknown or revokedsubject_mismatch(403) — the{userId}in the path is not the token's userorigin_rejected(403) — a browserOriginother than the configured web originpermission_required(403) — the operator credential lacks the scope this call needsrate_limited(429) — the per-key or per-user limit is spent; honourRetry-Afterstream_capacity(429) — no stream socket is free on this replica or for this user; honourRetry-Afterinvalid_cursor(400) — thecursoris not one this list minted
Validation rules
- Allowed values
["run_active","budget_exhausted","approval_not_pending","execution_capacity","execution_unavailable","stop_pending","automation_changed","automation_held","automation_invalid","automation_completed","automation_limit","profile_unknown_tool","deployment_paused","run_not_active","withdrawal_changed","credential_expired","account_disabled","account_not_provisioned","provider_unavailable","engine_unavailable","invalid_input","internal","partner_key_required","partner_key_invalid","subject_mismatch","origin_rejected","permission_required","rate_limited","stream_capacity","invalid_cursor"]
requestIdstringrequiredThe id Fin used for this request; quote it when reporting a problem
retryablebooleanrequiredWhether repeating the same request later can succeed without changing it
detailstringoptionalOnly on invalid_input: which part of the request failed validation
issuesarrayoptionalOnly on invalid_input: one entry per failing field
Show attributes
Only on invalid_input: one entry per failing field
Array items · object
pathstringrequiredThe JSON pointer of the failing field; empty for the root object
messagestringrequiredWhy the field failed
503 The replica is draining or a dependency did not answer; `retryable` says whether to try again.
The replica is draining or a dependency did not answer; retryable says whether to try again.
internal— a fault on our side; quoterequestIdwhen reporting it
application/problem+json · object
RFC 9457 problem details: what every error response carries. Never a provider's message, a query or a stack.
typestringrequiredThe kind of problem as a URN, urn:fin:error:<kind>; stable, compare against it
titlestringrequiredThe kind's human title, for logs; never parse it
statusintegerrequiredThe HTTP status, repeated in the body
Validation rules
- Minimum
400- Maximum
599
reasonstringoptionalThe machine-readable why. One of:
run_active(409) — a run already holds this conversationbudget_exhausted(409) — the user's spend headroom is gone, or an operator froze itapproval_not_pending(409) — the approval was already decided or has expired, or its id does not exist or belongs to a different conversationexecution_capacity(409) — no execution capacity is free right now;retryablesays whether to try againexecution_unavailable(409) — the execution engine could not take the workstop_pending(409) — a stop is already in progress and its cleanup is not yet confirmedautomation_changed(409) — therevisionsent is stale; reload the automationautomation_held(409) — an operator holds the automation; it fires again when releasedautomation_invalid(409) — the automation's definition cannot run as writtenautomation_completed(409) — the automation has finished for good and cannot fire againautomation_limit(409) — the user already has as many automations as the deployment allowsprofile_unknown_tool(409) — the run profile names a tool this deployment does not havedeployment_paused(409) — an operator paused a deployment control; nothing was admitted or firedrun_not_active(409) — the run named in the path is not the conversation's live runwithdrawal_changed(409) — the withdrawal cannot be prepared or confirmed as asked: the balance no longer covers it, its terms changed or expired, or it is already in progresscredential_expired(401) — the user token has expired; obtain a fresh oneaccount_disabled(403) — an operator disabled the accountaccount_not_provisioned(412) — the identity is verified but has no account yet; callusers.ensurefirstprovider_unavailable(503) — an external provider the call depends on did not answerengine_unavailable(503) — the execution engine did not answerinvalid_input(400) — the body or query failed validation;issuesnames each fieldinternal(500) — a fault on our side; quoterequestIdwhen reporting itpartner_key_required(401) — noX-Api-Keyheader was sentpartner_key_invalid(401) — theX-Api-Keyis unknown or revokedsubject_mismatch(403) — the{userId}in the path is not the token's userorigin_rejected(403) — a browserOriginother than the configured web originpermission_required(403) — the operator credential lacks the scope this call needsrate_limited(429) — the per-key or per-user limit is spent; honourRetry-Afterstream_capacity(429) — no stream socket is free on this replica or for this user; honourRetry-Afterinvalid_cursor(400) — thecursoris not one this list minted
Validation rules
- Allowed values
["run_active","budget_exhausted","approval_not_pending","execution_capacity","execution_unavailable","stop_pending","automation_changed","automation_held","automation_invalid","automation_completed","automation_limit","profile_unknown_tool","deployment_paused","run_not_active","withdrawal_changed","credential_expired","account_disabled","account_not_provisioned","provider_unavailable","engine_unavailable","invalid_input","internal","partner_key_required","partner_key_invalid","subject_mismatch","origin_rejected","permission_required","rate_limited","stream_capacity","invalid_cursor"]
requestIdstringrequiredThe id Fin used for this request; quote it when reporting a problem
retryablebooleanrequiredWhether repeating the same request later can succeed without changing it
detailstringoptionalOnly on invalid_input: which part of the request failed validation
issuesarrayoptionalOnly on invalid_input: one entry per failing field
Show attributes
Only on invalid_input: one entry per failing field
Array items · object
pathstringrequiredThe JSON pointer of the failing field; empty for the root object
messagestringrequiredWhy the field failed
Complete OpenAPI definition
The exact operation and all referenced components, including recursive schemas.
{
"operation": {
"operationId": "activity.financialOperations",
"summary": "List financial activity",
"tags": [
"activity"
],
"description": "Returns presentation rows for actual persisted financial requests, newest request first, including direct withdrawals with no conversation. FinancialOperations.get provides the complete canonical request and receipts for each operation identity.",
"parameters": [
{
"schema": {
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 50
},
"in": "query",
"name": "limit",
"required": false,
"description": "How many financial requests to return, at most 50."
},
{
"schema": {
"type": "string",
"maxLength": 256
},
"in": "query",
"name": "cursor",
"required": false,
"description": "The opaque cursor returned by the preceding page; omit for the newest requests."
},
{
"schema": {
"type": "string",
"enum": [
"conversation",
"automation",
"operation"
]
},
"in": "query",
"name": "origin",
"required": false,
"description": "Filter by retained conversation origin, or `operation` for direct financial requests without a conversation. Omit for every origin."
},
{
"schema": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"in": "path",
"name": "userId",
"required": true,
"description": "The user in the path; must equal the token's own account."
}
],
"security": [
{
"apiKey": [],
"userToken": []
}
],
"responses": {
"200": {
"description": "A page of financial activity and the pending approval count.",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {
"maxItems": 50,
"type": "array",
"items": {
"$ref": "#/components/schemas/ExecutionActivityItem"
},
"description": "This page of financial requests, newest request first."
},
"nextCursor": {
"description": "The opaque cursor for the next page of financial requests, or null at the end.",
"type": [
"string",
"null"
]
},
"pendingApprovals": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991,
"description": "The caller's unexpired pending approvals across all conversations and direct operations."
}
},
"required": [
"data",
"nextCursor",
"pendingApprovals"
]
}
}
}
},
"400": {
"$ref": "#/components/responses/InvalidInput"
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
},
"412": {
"$ref": "#/components/responses/AccountNotProvisioned"
},
"429": {
"$ref": "#/components/responses/TooManyRequests"
},
"500": {
"$ref": "#/components/responses/Internal"
},
"503": {
"$ref": "#/components/responses/Unavailable"
}
}
},
"components": {
"schemas": {
"ExecutionActivityItem": {
"anyOf": [
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The durable financial operation ID, stable across approval, execution and later receipts."
},
"title": {
"description": "The conversation's current title; null for an untitled conversation or a direct operation.",
"type": [
"string",
"null"
]
},
"createdAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the financial request was first persisted."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "The latest request or claim creation, execution start, outcome report, signature or settlement timestamp retained for this operation."
},
"approval": {
"description": "The request's exact human review, when one was required; absent when it uses standing consent or historical review provenance is unknown.",
"type": "object",
"properties": {
"approvalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The exact single-use review bound to this financial request."
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"denied",
"expired"
],
"description": "The recorded human decision, with overdue pending reviews shown as expired; approval alone does not prove execution."
},
"contract": {
"description": "The exact reviewed financial terms, when retained and readable.",
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "near_intents_transfer",
"description": "Which contract template this is."
},
"actions": {
"minItems": 1,
"maxItems": 16,
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "swap",
"description": "Exchange one asset for another; custody never leaves the agent wallet."
},
"input": {
"anyOf": [
{
"type": "object",
"properties": {
"pinned": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"pattern": "^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$",
"description": "The token's NEP-141 identifier."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
}
},
"required": [
"tokenId",
"decimals"
],
"description": "The exact token this asset is pinned to."
}
},
"required": [
"pinned"
]
},
{
"type": "object",
"properties": {
"any": {
"type": "boolean",
"const": true,
"description": "Any token the agent wallet holds; the executor picks one at execution."
}
},
"required": [
"any"
]
}
],
"description": "The asset this action spends: pinned to one token, or any token the agent wallet holds."
},
"quantity": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_input_tokens",
"description": "Spend an exact amount of the input token."
},
"amountRaw": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$",
"description": "The exact input amount, in the input token's smallest unit."
}
},
"required": [
"kind",
"amountRaw"
],
"description": "Spend an exact quantity of the input token, not its USD value. Exactly 5 USDC with verified input decimals 6 means amountRaw \"5000000\". Scale the requested decimal digits using the verified input decimals; reject excess fractional digits. No floating-point arithmetic or bash."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_input_value_usd",
"description": "Spend a USD-denominated value of the input token."
},
"value": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})(?:\\.\\d{1,18})?$",
"description": "The USD value to spend, as a decimal string."
}
},
"required": [
"kind",
"value"
],
"description": "Spend a USD-denominated value of the input token: \"$5 worth of USDC\" means value \"5\". The host calculates token units from live prices. This does not mean exactly 5 USDC; never substitute it for a token-denominated quantity."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_output_tokens",
"description": "Receive an exact amount of the output token."
},
"amountRaw": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$",
"description": "The exact output amount, in the output token's smallest unit."
}
},
"required": [
"kind",
"amountRaw"
],
"description": "Receive an exact quantity of the output token. Scale the requested decimal digits using the verified output decimals to obtain amountRaw; reject excess fractional digits. The host calculates the required input. No floating-point arithmetic or bash."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "all_of_input",
"description": "Spend everything the agent wallet holds of the input asset."
}
},
"required": [
"kind"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "fraction_of_input",
"description": "Spend a fraction of the input asset."
},
"bps": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,4})$",
"description": "The fraction to spend, in basis points of the input asset."
}
},
"required": [
"kind",
"bps"
]
}
],
"description": "How much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it."
},
"output": {
"anyOf": [
{
"type": "object",
"properties": {
"pinned": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"pattern": "^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$",
"description": "The token's NEP-141 identifier."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
}
},
"required": [
"tokenId",
"decimals"
],
"description": "The exact token this asset is pinned to."
}
},
"required": [
"pinned"
]
},
{
"type": "object",
"properties": {
"any": {
"type": "boolean",
"const": true,
"description": "Any token the agent wallet holds; the executor picks one at execution."
}
},
"required": [
"any"
]
}
],
"description": "The asset this action produces: pinned to one token, or left open."
}
},
"required": [
"kind",
"input",
"quantity",
"output"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "withdraw_to_owner",
"description": "Return an asset to the account that owns the agent wallet."
},
"input": {
"anyOf": [
{
"type": "object",
"properties": {
"pinned": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"pattern": "^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$",
"description": "The token's NEP-141 identifier."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
}
},
"required": [
"tokenId",
"decimals"
],
"description": "The exact token this asset is pinned to."
}
},
"required": [
"pinned"
]
},
{
"type": "object",
"properties": {
"any": {
"type": "boolean",
"const": true,
"description": "Any token the agent wallet holds; the executor picks one at execution."
}
},
"required": [
"any"
]
}
],
"description": "The asset this action spends: pinned to one token, or any token the agent wallet holds."
},
"quantity": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_input_tokens",
"description": "Spend an exact amount of the input token."
},
"amountRaw": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$",
"description": "The exact input amount, in the input token's smallest unit."
}
},
"required": [
"kind",
"amountRaw"
],
"description": "Spend an exact quantity of the input token, not its USD value. Exactly 5 USDC with verified input decimals 6 means amountRaw \"5000000\". Scale the requested decimal digits using the verified input decimals; reject excess fractional digits. No floating-point arithmetic or bash."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_input_value_usd",
"description": "Spend a USD-denominated value of the input token."
},
"value": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})(?:\\.\\d{1,18})?$",
"description": "The USD value to spend, as a decimal string."
}
},
"required": [
"kind",
"value"
],
"description": "Spend a USD-denominated value of the input token: \"$5 worth of USDC\" means value \"5\". The host calculates token units from live prices. This does not mean exactly 5 USDC; never substitute it for a token-denominated quantity."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_output_tokens",
"description": "Receive an exact amount of the output token."
},
"amountRaw": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$",
"description": "The exact output amount, in the output token's smallest unit."
}
},
"required": [
"kind",
"amountRaw"
],
"description": "Receive an exact quantity of the output token. Scale the requested decimal digits using the verified output decimals to obtain amountRaw; reject excess fractional digits. The host calculates the required input. No floating-point arithmetic or bash."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "all_of_input",
"description": "Spend everything the agent wallet holds of the input asset."
}
},
"required": [
"kind"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "fraction_of_input",
"description": "Spend a fraction of the input asset."
},
"bps": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,4})$",
"description": "The fraction to spend, in basis points of the input asset."
}
},
"required": [
"kind",
"bps"
]
}
],
"description": "How much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it."
},
"output": {
"anyOf": [
{
"type": "object",
"properties": {
"pinned": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"pattern": "^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$",
"description": "The token's NEP-141 identifier."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
}
},
"required": [
"tokenId",
"decimals"
],
"description": "The exact token this asset is pinned to."
}
},
"required": [
"pinned"
]
},
{
"type": "object",
"properties": {
"any": {
"type": "boolean",
"const": true,
"description": "Any token the agent wallet holds; the executor picks one at execution."
}
},
"required": [
"any"
]
}
],
"description": "The asset this action produces: pinned to one token, or left open."
}
},
"required": [
"kind",
"input",
"quantity",
"output"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "send",
"description": "Pay a pinned destination outside the agent wallet."
},
"input": {
"anyOf": [
{
"type": "object",
"properties": {
"pinned": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"pattern": "^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$",
"description": "The token's NEP-141 identifier."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
}
},
"required": [
"tokenId",
"decimals"
],
"description": "The exact token this asset is pinned to."
}
},
"required": [
"pinned"
]
},
{
"type": "object",
"properties": {
"any": {
"type": "boolean",
"const": true,
"description": "Any token the agent wallet holds; the executor picks one at execution."
}
},
"required": [
"any"
]
}
],
"description": "The asset this action spends: pinned to one token, or any token the agent wallet holds."
},
"quantity": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_input_tokens",
"description": "Spend an exact amount of the input token."
},
"amountRaw": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$",
"description": "The exact input amount, in the input token's smallest unit."
}
},
"required": [
"kind",
"amountRaw"
],
"description": "Spend an exact quantity of the input token, not its USD value. Exactly 5 USDC with verified input decimals 6 means amountRaw \"5000000\". Scale the requested decimal digits using the verified input decimals; reject excess fractional digits. No floating-point arithmetic or bash."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_input_value_usd",
"description": "Spend a USD-denominated value of the input token."
},
"value": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})(?:\\.\\d{1,18})?$",
"description": "The USD value to spend, as a decimal string."
}
},
"required": [
"kind",
"value"
],
"description": "Spend a USD-denominated value of the input token: \"$5 worth of USDC\" means value \"5\". The host calculates token units from live prices. This does not mean exactly 5 USDC; never substitute it for a token-denominated quantity."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_output_tokens",
"description": "Receive an exact amount of the output token."
},
"amountRaw": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$",
"description": "The exact output amount, in the output token's smallest unit."
}
},
"required": [
"kind",
"amountRaw"
],
"description": "Receive an exact quantity of the output token. Scale the requested decimal digits using the verified output decimals to obtain amountRaw; reject excess fractional digits. The host calculates the required input. No floating-point arithmetic or bash."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "all_of_input",
"description": "Spend everything the agent wallet holds of the input asset."
}
},
"required": [
"kind"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "fraction_of_input",
"description": "Spend a fraction of the input asset."
},
"bps": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,4})$",
"description": "The fraction to spend, in basis points of the input asset."
}
},
"required": [
"kind",
"bps"
]
}
],
"description": "How much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it."
},
"output": {
"anyOf": [
{
"type": "object",
"properties": {
"pinned": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"pattern": "^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$",
"description": "The token's NEP-141 identifier."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
}
},
"required": [
"tokenId",
"decimals"
],
"description": "The exact token this asset is pinned to."
}
},
"required": [
"pinned"
]
},
{
"type": "object",
"properties": {
"any": {
"type": "boolean",
"const": true,
"description": "Any token the agent wallet holds; the executor picks one at execution."
}
},
"required": [
"any"
]
}
],
"description": "The asset this action produces: pinned to one token, or left open."
},
"recipient": {
"type": "object",
"properties": {
"chain": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"description": "Which chain the destination address is on."
},
"address": {
"type": "string",
"pattern": "^[\\x21-\\x7e]{1,128}$",
"description": "The destination address on that chain."
}
},
"required": [
"chain",
"address"
],
"description": "The pinned destination this action pays."
}
},
"required": [
"kind",
"input",
"quantity",
"output",
"recipient"
]
}
]
},
"description": "The actions this contract authorizes, executed in order."
},
"validUntil": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When this contract's authority expires."
},
"maxExecutions": {
"type": "integer",
"minimum": 1,
"maximum": 10000,
"description": "How many times this contract may be executed before it is exhausted."
},
"bounds": {
"type": "object",
"properties": {
"maxValueLossBps": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,4})$",
"description": "The most value an execution may give up to price movement and fees together, in basis points."
},
"maxSignatureLifetimeSeconds": {
"type": "integer",
"minimum": 1,
"maximum": 259500,
"description": "Explicit maximum lifetime of each released transfer signature, in seconds. 1Click confidential swaps require up to 259500 seconds (72 hours 5 minutes). This does not extend the short execution window or approval validity."
}
},
"required": [
"maxValueLossBps",
"maxSignatureLifetimeSeconds"
],
"description": "The value-loss and signature-lifetime limits every execution must respect."
}
},
"required": [
"type",
"actions",
"validUntil",
"maxExecutions",
"bounds"
]
}
]
},
"expiresAt": {
"description": "When the exact review ceases to authorize an execution claim.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
"executionRestriction": {
"description": "The immutable restriction that prevents automatic signing under this approval.",
"type": "string",
"const": "signing_disabled"
}
},
"required": [
"approvalId",
"status"
]
},
"occurrenceId": {
"description": "The actual automation occurrence that requested this operation, when present; never a substitute for its operation ID.",
"type": "string",
"minLength": 1,
"maxLength": 160
},
"legs": {
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"minimum": 0,
"maximum": 15,
"description": "This leg's position in the frozen plan, counting from zero."
},
"input": {
"description": "The frozen input asset and requested amount when that side was fixed; not measured spend.",
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "The asset's NEP-141 token id."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
},
"amountRaw": {
"description": "The amount, in the token's smallest unit, when it is known.",
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$"
}
},
"required": [
"tokenId",
"decimals"
]
},
"output": {
"description": "The frozen output asset and requested amount when that side was fixed; not measured proceeds.",
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "The asset's NEP-141 token id."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
},
"amountRaw": {
"description": "The amount, in the token's smallest unit, when it is known.",
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$"
}
},
"required": [
"tokenId",
"decimals"
]
},
"minimumOutputRaw": {
"description": "The minimum output required by an exact-input leg, in the output asset's smallest unit.",
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$"
},
"maximumInputRaw": {
"description": "The maximum input permitted by an exact-output leg, in the input asset's smallest unit.",
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$"
},
"stage": {
"description": "The stage derived from the persisted claim while it has no terminal receipt; absent for untouched planned legs.",
"type": "string",
"enum": [
"quoting",
"signed",
"confirming",
"unresolved"
]
},
"legId": {
"description": "The actual claim's durable ID; absent when this planned leg was never attempted.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"receipt": {
"description": "The retained terminal evidence for the actual leg; untouched planned legs have no receipt.",
"oneOf": [
{
"type": "object",
"properties": {
"approvalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The approval's id."
},
"legId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Which leg of the plan this receipt settles."
},
"index": {
"type": "integer",
"minimum": 0,
"maximum": 15,
"description": "This leg's position within the plan, counting from zero."
},
"operationId": {
"description": "The durable financial request this evidence belongs to.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"occurrenceId": {
"description": "The archived event's original identity, retained verbatim; current receipts use `operationId`.",
"type": "string",
"minLength": 1,
"maxLength": 160
},
"state": {
"type": "string",
"const": "settled",
"description": "The leg settled: its output asset moved as planned."
},
"output": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "The asset's NEP-141 token id."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
},
"amountRaw": {
"description": "The amount, in the token's smallest unit, when it is known.",
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$"
}
},
"required": [
"tokenId",
"decimals"
],
"description": "What the leg produced."
}
},
"required": [
"approvalId",
"legId",
"index",
"state",
"output"
]
},
{
"type": "object",
"properties": {
"approvalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The approval's id."
},
"legId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Which leg of the plan this receipt settles."
},
"index": {
"type": "integer",
"minimum": 0,
"maximum": 15,
"description": "This leg's position within the plan, counting from zero."
},
"operationId": {
"description": "The durable financial request this evidence belongs to.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"occurrenceId": {
"description": "The archived event's original identity, retained verbatim; current receipts use `operationId`.",
"type": "string",
"minLength": 1,
"maxLength": 160
},
"state": {
"type": "string",
"const": "refunded",
"description": "The leg did not settle and its input asset was returned."
},
"refund": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "The asset's NEP-141 token id."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
},
"amountRaw": {
"description": "The amount, in the token's smallest unit, when it is known.",
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$"
}
},
"required": [
"tokenId",
"decimals"
],
"description": "What was returned."
}
},
"required": [
"approvalId",
"legId",
"index",
"state",
"refund"
]
},
{
"type": "object",
"properties": {
"approvalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The approval's id."
},
"legId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Which leg of the plan this receipt settles."
},
"index": {
"type": "integer",
"minimum": 0,
"maximum": 15,
"description": "This leg's position within the plan, counting from zero."
},
"operationId": {
"description": "The durable financial request this evidence belongs to.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"occurrenceId": {
"description": "The archived event's original identity, retained verbatim; current receipts use `operationId`.",
"type": "string",
"minLength": 1,
"maxLength": 160
},
"state": {
"type": "string",
"const": "not_executed",
"description": "The leg did not settle. Most reasons mean it never reached the provider; `rejected` means it did and was refused there — see `reason`."
},
"reason": {
"description": "Why nothing executed: `signing_disabled` when automatic signing was off, `signing_failed` when signing itself failed, `rejected` when the provider refused the submission outright (it did reach the provider), `expired` when the leg's own signing/deposit window elapsed before a terminal fact arrived, or `failed` otherwise. Optional so receipts written before the reason was carried still parse.",
"type": "string",
"enum": [
"signing_disabled",
"signing_failed",
"rejected",
"expired",
"failed"
]
}
},
"required": [
"approvalId",
"legId",
"index",
"state"
]
}
]
}
},
"required": [
"index"
]
},
"description": "Every leg of the frozen plan in plan order, including untouched legs without claims or receipts; empty before a plan exists."
},
"result": {
"description": "The persisted command outcome, updated in this read by conclusive receipts; absent while no outcome exists, including denied or expired preparation.",
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"completed",
"failed",
"denied",
"unverified",
"pending",
"partial",
"no_trade",
"settled",
"refunded",
"not_executed"
],
"description": "The canonical financial outcome projected for display; refused requests appear as denied, pending is unresolved and partial means only part executed."
},
"reason": {
"description": "Present when automatic signing was disabled for the reported non-execution.",
"type": "string",
"const": "signing_disabled"
},
"message": {
"description": "The host's fixed explanation for a refused request, when present; never raw provider text.",
"type": "string",
"maxLength": 280
},
"legs": {
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"minimum": 0,
"maximum": 15,
"description": "The reported leg's position in the frozen plan, counting from zero."
},
"state": {
"type": "string",
"enum": [
"claimed",
"signed",
"uncertain",
"settled",
"refunded",
"not_executed"
],
"description": "The retained execution or settlement state for this reported leg."
}
},
"required": [
"index",
"state"
]
},
"description": "The actual legs represented by this outcome; untouched planned legs are not fabricated as results."
}
},
"required": [
"status",
"legs"
]
},
"running": {
"type": "boolean",
"description": "True when the operation has an execution claim and no current outcome; it does not prove a process is still running."
},
"ended": {
"type": "boolean",
"description": "True when no outcome is available and the operation is uncertain, denied or expired. Later receipts may resolve uncertainty; this does not assert that settlement is final."
},
"conversationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The conversation in which the agent requested this financial operation."
},
"origin": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "conversation",
"description": "An ordinary user-started conversation."
}
},
"required": [
"type"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "automation",
"description": "A conversation an automation created."
},
"automationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The automation that created this conversation."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "The automation's name at the time this conversation started."
}
},
"required": [
"type",
"automationId",
"name"
]
}
],
"description": "The conversation's retained origin, even if a user later continued an automation-created conversation."
}
},
"required": [
"key",
"title",
"createdAt",
"updatedAt",
"legs",
"running",
"ended",
"conversationId",
"origin"
]
},
{
"type": "object",
"properties": {
"key": {
"type": "string",
"minLength": 1,
"maxLength": 200,
"description": "The durable financial operation ID, stable across approval, execution and later receipts."
},
"title": {
"description": "The conversation's current title; null for an untitled conversation or a direct operation.",
"type": [
"string",
"null"
]
},
"createdAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When the financial request was first persisted."
},
"updatedAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "The latest request or claim creation, execution start, outcome report, signature or settlement timestamp retained for this operation."
},
"approval": {
"description": "The request's exact human review, when one was required; absent when it uses standing consent or historical review provenance is unknown.",
"type": "object",
"properties": {
"approvalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The exact single-use review bound to this financial request."
},
"status": {
"type": "string",
"enum": [
"pending",
"approved",
"denied",
"expired"
],
"description": "The recorded human decision, with overdue pending reviews shown as expired; approval alone does not prove execution."
},
"contract": {
"description": "The exact reviewed financial terms, when retained and readable.",
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "near_intents_transfer",
"description": "Which contract template this is."
},
"actions": {
"minItems": 1,
"maxItems": 16,
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "swap",
"description": "Exchange one asset for another; custody never leaves the agent wallet."
},
"input": {
"anyOf": [
{
"type": "object",
"properties": {
"pinned": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"pattern": "^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$",
"description": "The token's NEP-141 identifier."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
}
},
"required": [
"tokenId",
"decimals"
],
"description": "The exact token this asset is pinned to."
}
},
"required": [
"pinned"
]
},
{
"type": "object",
"properties": {
"any": {
"type": "boolean",
"const": true,
"description": "Any token the agent wallet holds; the executor picks one at execution."
}
},
"required": [
"any"
]
}
],
"description": "The asset this action spends: pinned to one token, or any token the agent wallet holds."
},
"quantity": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_input_tokens",
"description": "Spend an exact amount of the input token."
},
"amountRaw": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$",
"description": "The exact input amount, in the input token's smallest unit."
}
},
"required": [
"kind",
"amountRaw"
],
"description": "Spend an exact quantity of the input token, not its USD value. Exactly 5 USDC with verified input decimals 6 means amountRaw \"5000000\". Scale the requested decimal digits using the verified input decimals; reject excess fractional digits. No floating-point arithmetic or bash."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_input_value_usd",
"description": "Spend a USD-denominated value of the input token."
},
"value": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})(?:\\.\\d{1,18})?$",
"description": "The USD value to spend, as a decimal string."
}
},
"required": [
"kind",
"value"
],
"description": "Spend a USD-denominated value of the input token: \"$5 worth of USDC\" means value \"5\". The host calculates token units from live prices. This does not mean exactly 5 USDC; never substitute it for a token-denominated quantity."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_output_tokens",
"description": "Receive an exact amount of the output token."
},
"amountRaw": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$",
"description": "The exact output amount, in the output token's smallest unit."
}
},
"required": [
"kind",
"amountRaw"
],
"description": "Receive an exact quantity of the output token. Scale the requested decimal digits using the verified output decimals to obtain amountRaw; reject excess fractional digits. The host calculates the required input. No floating-point arithmetic or bash."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "all_of_input",
"description": "Spend everything the agent wallet holds of the input asset."
}
},
"required": [
"kind"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "fraction_of_input",
"description": "Spend a fraction of the input asset."
},
"bps": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,4})$",
"description": "The fraction to spend, in basis points of the input asset."
}
},
"required": [
"kind",
"bps"
]
}
],
"description": "How much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it."
},
"output": {
"anyOf": [
{
"type": "object",
"properties": {
"pinned": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"pattern": "^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$",
"description": "The token's NEP-141 identifier."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
}
},
"required": [
"tokenId",
"decimals"
],
"description": "The exact token this asset is pinned to."
}
},
"required": [
"pinned"
]
},
{
"type": "object",
"properties": {
"any": {
"type": "boolean",
"const": true,
"description": "Any token the agent wallet holds; the executor picks one at execution."
}
},
"required": [
"any"
]
}
],
"description": "The asset this action produces: pinned to one token, or left open."
}
},
"required": [
"kind",
"input",
"quantity",
"output"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "withdraw_to_owner",
"description": "Return an asset to the account that owns the agent wallet."
},
"input": {
"anyOf": [
{
"type": "object",
"properties": {
"pinned": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"pattern": "^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$",
"description": "The token's NEP-141 identifier."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
}
},
"required": [
"tokenId",
"decimals"
],
"description": "The exact token this asset is pinned to."
}
},
"required": [
"pinned"
]
},
{
"type": "object",
"properties": {
"any": {
"type": "boolean",
"const": true,
"description": "Any token the agent wallet holds; the executor picks one at execution."
}
},
"required": [
"any"
]
}
],
"description": "The asset this action spends: pinned to one token, or any token the agent wallet holds."
},
"quantity": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_input_tokens",
"description": "Spend an exact amount of the input token."
},
"amountRaw": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$",
"description": "The exact input amount, in the input token's smallest unit."
}
},
"required": [
"kind",
"amountRaw"
],
"description": "Spend an exact quantity of the input token, not its USD value. Exactly 5 USDC with verified input decimals 6 means amountRaw \"5000000\". Scale the requested decimal digits using the verified input decimals; reject excess fractional digits. No floating-point arithmetic or bash."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_input_value_usd",
"description": "Spend a USD-denominated value of the input token."
},
"value": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})(?:\\.\\d{1,18})?$",
"description": "The USD value to spend, as a decimal string."
}
},
"required": [
"kind",
"value"
],
"description": "Spend a USD-denominated value of the input token: \"$5 worth of USDC\" means value \"5\". The host calculates token units from live prices. This does not mean exactly 5 USDC; never substitute it for a token-denominated quantity."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_output_tokens",
"description": "Receive an exact amount of the output token."
},
"amountRaw": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$",
"description": "The exact output amount, in the output token's smallest unit."
}
},
"required": [
"kind",
"amountRaw"
],
"description": "Receive an exact quantity of the output token. Scale the requested decimal digits using the verified output decimals to obtain amountRaw; reject excess fractional digits. The host calculates the required input. No floating-point arithmetic or bash."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "all_of_input",
"description": "Spend everything the agent wallet holds of the input asset."
}
},
"required": [
"kind"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "fraction_of_input",
"description": "Spend a fraction of the input asset."
},
"bps": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,4})$",
"description": "The fraction to spend, in basis points of the input asset."
}
},
"required": [
"kind",
"bps"
]
}
],
"description": "How much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it."
},
"output": {
"anyOf": [
{
"type": "object",
"properties": {
"pinned": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"pattern": "^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$",
"description": "The token's NEP-141 identifier."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
}
},
"required": [
"tokenId",
"decimals"
],
"description": "The exact token this asset is pinned to."
}
},
"required": [
"pinned"
]
},
{
"type": "object",
"properties": {
"any": {
"type": "boolean",
"const": true,
"description": "Any token the agent wallet holds; the executor picks one at execution."
}
},
"required": [
"any"
]
}
],
"description": "The asset this action produces: pinned to one token, or left open."
}
},
"required": [
"kind",
"input",
"quantity",
"output"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "send",
"description": "Pay a pinned destination outside the agent wallet."
},
"input": {
"anyOf": [
{
"type": "object",
"properties": {
"pinned": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"pattern": "^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$",
"description": "The token's NEP-141 identifier."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
}
},
"required": [
"tokenId",
"decimals"
],
"description": "The exact token this asset is pinned to."
}
},
"required": [
"pinned"
]
},
{
"type": "object",
"properties": {
"any": {
"type": "boolean",
"const": true,
"description": "Any token the agent wallet holds; the executor picks one at execution."
}
},
"required": [
"any"
]
}
],
"description": "The asset this action spends: pinned to one token, or any token the agent wallet holds."
},
"quantity": {
"oneOf": [
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_input_tokens",
"description": "Spend an exact amount of the input token."
},
"amountRaw": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$",
"description": "The exact input amount, in the input token's smallest unit."
}
},
"required": [
"kind",
"amountRaw"
],
"description": "Spend an exact quantity of the input token, not its USD value. Exactly 5 USDC with verified input decimals 6 means amountRaw \"5000000\". Scale the requested decimal digits using the verified input decimals; reject excess fractional digits. No floating-point arithmetic or bash."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_input_value_usd",
"description": "Spend a USD-denominated value of the input token."
},
"value": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})(?:\\.\\d{1,18})?$",
"description": "The USD value to spend, as a decimal string."
}
},
"required": [
"kind",
"value"
],
"description": "Spend a USD-denominated value of the input token: \"$5 worth of USDC\" means value \"5\". The host calculates token units from live prices. This does not mean exactly 5 USDC; never substitute it for a token-denominated quantity."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "exact_output_tokens",
"description": "Receive an exact amount of the output token."
},
"amountRaw": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$",
"description": "The exact output amount, in the output token's smallest unit."
}
},
"required": [
"kind",
"amountRaw"
],
"description": "Receive an exact quantity of the output token. Scale the requested decimal digits using the verified output decimals to obtain amountRaw; reject excess fractional digits. The host calculates the required input. No floating-point arithmetic or bash."
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "all_of_input",
"description": "Spend everything the agent wallet holds of the input asset."
}
},
"required": [
"kind"
]
},
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"const": "fraction_of_input",
"description": "Spend a fraction of the input asset."
},
"bps": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,4})$",
"description": "The fraction to spend, in basis points of the input asset."
}
},
"required": [
"kind",
"bps"
]
}
],
"description": "How much moves: an exact token amount, an exact USD value, an exact output amount, all of the input, or a fraction of it."
},
"output": {
"anyOf": [
{
"type": "object",
"properties": {
"pinned": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"pattern": "^nep141:[a-z0-9]+(?:[._-][a-z0-9]+)*$",
"description": "The token's NEP-141 identifier."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
}
},
"required": [
"tokenId",
"decimals"
],
"description": "The exact token this asset is pinned to."
}
},
"required": [
"pinned"
]
},
{
"type": "object",
"properties": {
"any": {
"type": "boolean",
"const": true,
"description": "Any token the agent wallet holds; the executor picks one at execution."
}
},
"required": [
"any"
]
}
],
"description": "The asset this action produces: pinned to one token, or left open."
},
"recipient": {
"type": "object",
"properties": {
"chain": {
"type": "string",
"minLength": 1,
"maxLength": 32,
"description": "Which chain the destination address is on."
},
"address": {
"type": "string",
"pattern": "^[\\x21-\\x7e]{1,128}$",
"description": "The destination address on that chain."
}
},
"required": [
"chain",
"address"
],
"description": "The pinned destination this action pays."
}
},
"required": [
"kind",
"input",
"quantity",
"output",
"recipient"
]
}
]
},
"description": "The actions this contract authorizes, executed in order."
},
"validUntil": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
"description": "When this contract's authority expires."
},
"maxExecutions": {
"type": "integer",
"minimum": 1,
"maximum": 10000,
"description": "How many times this contract may be executed before it is exhausted."
},
"bounds": {
"type": "object",
"properties": {
"maxValueLossBps": {
"type": "string",
"pattern": "^(0|[1-9]\\d{0,4})$",
"description": "The most value an execution may give up to price movement and fees together, in basis points."
},
"maxSignatureLifetimeSeconds": {
"type": "integer",
"minimum": 1,
"maximum": 259500,
"description": "Explicit maximum lifetime of each released transfer signature, in seconds. 1Click confidential swaps require up to 259500 seconds (72 hours 5 minutes). This does not extend the short execution window or approval validity."
}
},
"required": [
"maxValueLossBps",
"maxSignatureLifetimeSeconds"
],
"description": "The value-loss and signature-lifetime limits every execution must respect."
}
},
"required": [
"type",
"actions",
"validUntil",
"maxExecutions",
"bounds"
]
}
]
},
"expiresAt": {
"description": "When the exact review ceases to authorize an execution claim.",
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
"executionRestriction": {
"description": "The immutable restriction that prevents automatic signing under this approval.",
"type": "string",
"const": "signing_disabled"
}
},
"required": [
"approvalId",
"status"
]
},
"occurrenceId": {
"description": "The actual automation occurrence that requested this operation, when present; never a substitute for its operation ID.",
"type": "string",
"minLength": 1,
"maxLength": 160
},
"legs": {
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"minimum": 0,
"maximum": 15,
"description": "This leg's position in the frozen plan, counting from zero."
},
"input": {
"description": "The frozen input asset and requested amount when that side was fixed; not measured spend.",
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "The asset's NEP-141 token id."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
},
"amountRaw": {
"description": "The amount, in the token's smallest unit, when it is known.",
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$"
}
},
"required": [
"tokenId",
"decimals"
]
},
"output": {
"description": "The frozen output asset and requested amount when that side was fixed; not measured proceeds.",
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "The asset's NEP-141 token id."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
},
"amountRaw": {
"description": "The amount, in the token's smallest unit, when it is known.",
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$"
}
},
"required": [
"tokenId",
"decimals"
]
},
"minimumOutputRaw": {
"description": "The minimum output required by an exact-input leg, in the output asset's smallest unit.",
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$"
},
"maximumInputRaw": {
"description": "The maximum input permitted by an exact-output leg, in the input asset's smallest unit.",
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$"
},
"stage": {
"description": "The stage derived from the persisted claim while it has no terminal receipt; absent for untouched planned legs.",
"type": "string",
"enum": [
"quoting",
"signed",
"confirming",
"unresolved"
]
},
"legId": {
"description": "The actual claim's durable ID; absent when this planned leg was never attempted.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"receipt": {
"description": "The retained terminal evidence for the actual leg; untouched planned legs have no receipt.",
"oneOf": [
{
"type": "object",
"properties": {
"approvalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The approval's id."
},
"legId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Which leg of the plan this receipt settles."
},
"index": {
"type": "integer",
"minimum": 0,
"maximum": 15,
"description": "This leg's position within the plan, counting from zero."
},
"operationId": {
"description": "The durable financial request this evidence belongs to.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"occurrenceId": {
"description": "The archived event's original identity, retained verbatim; current receipts use `operationId`.",
"type": "string",
"minLength": 1,
"maxLength": 160
},
"state": {
"type": "string",
"const": "settled",
"description": "The leg settled: its output asset moved as planned."
},
"output": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "The asset's NEP-141 token id."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
},
"amountRaw": {
"description": "The amount, in the token's smallest unit, when it is known.",
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$"
}
},
"required": [
"tokenId",
"decimals"
],
"description": "What the leg produced."
}
},
"required": [
"approvalId",
"legId",
"index",
"state",
"output"
]
},
{
"type": "object",
"properties": {
"approvalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The approval's id."
},
"legId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Which leg of the plan this receipt settles."
},
"index": {
"type": "integer",
"minimum": 0,
"maximum": 15,
"description": "This leg's position within the plan, counting from zero."
},
"operationId": {
"description": "The durable financial request this evidence belongs to.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"occurrenceId": {
"description": "The archived event's original identity, retained verbatim; current receipts use `operationId`.",
"type": "string",
"minLength": 1,
"maxLength": 160
},
"state": {
"type": "string",
"const": "refunded",
"description": "The leg did not settle and its input asset was returned."
},
"refund": {
"type": "object",
"properties": {
"tokenId": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "The asset's NEP-141 token id."
},
"decimals": {
"type": "integer",
"minimum": 0,
"maximum": 38,
"description": "How many decimal places the token's smallest unit represents."
},
"amountRaw": {
"description": "The amount, in the token's smallest unit, when it is known.",
"type": "string",
"pattern": "^(0|[1-9]\\d{0,38})$"
}
},
"required": [
"tokenId",
"decimals"
],
"description": "What was returned."
}
},
"required": [
"approvalId",
"legId",
"index",
"state",
"refund"
]
},
{
"type": "object",
"properties": {
"approvalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The approval's id."
},
"legId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Which leg of the plan this receipt settles."
},
"index": {
"type": "integer",
"minimum": 0,
"maximum": 15,
"description": "This leg's position within the plan, counting from zero."
},
"operationId": {
"description": "The durable financial request this evidence belongs to.",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"occurrenceId": {
"description": "The archived event's original identity, retained verbatim; current receipts use `operationId`.",
"type": "string",
"minLength": 1,
"maxLength": 160
},
"state": {
"type": "string",
"const": "not_executed",
"description": "The leg did not settle. Most reasons mean it never reached the provider; `rejected` means it did and was refused there — see `reason`."
},
"reason": {
"description": "Why nothing executed: `signing_disabled` when automatic signing was off, `signing_failed` when signing itself failed, `rejected` when the provider refused the submission outright (it did reach the provider), `expired` when the leg's own signing/deposit window elapsed before a terminal fact arrived, or `failed` otherwise. Optional so receipts written before the reason was carried still parse.",
"type": "string",
"enum": [
"signing_disabled",
"signing_failed",
"rejected",
"expired",
"failed"
]
}
},
"required": [
"approvalId",
"legId",
"index",
"state"
]
}
]
}
},
"required": [
"index"
]
},
"description": "Every leg of the frozen plan in plan order, including untouched legs without claims or receipts; empty before a plan exists."
},
"result": {
"description": "The persisted command outcome, updated in this read by conclusive receipts; absent while no outcome exists, including denied or expired preparation.",
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"completed",
"failed",
"denied",
"unverified",
"pending",
"partial",
"no_trade",
"settled",
"refunded",
"not_executed"
],
"description": "The canonical financial outcome projected for display; refused requests appear as denied, pending is unresolved and partial means only part executed."
},
"reason": {
"description": "Present when automatic signing was disabled for the reported non-execution.",
"type": "string",
"const": "signing_disabled"
},
"message": {
"description": "The host's fixed explanation for a refused request, when present; never raw provider text.",
"type": "string",
"maxLength": 280
},
"legs": {
"maxItems": 16,
"type": "array",
"items": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"minimum": 0,
"maximum": 15,
"description": "The reported leg's position in the frozen plan, counting from zero."
},
"state": {
"type": "string",
"enum": [
"claimed",
"signed",
"uncertain",
"settled",
"refunded",
"not_executed"
],
"description": "The retained execution or settlement state for this reported leg."
}
},
"required": [
"index",
"state"
]
},
"description": "The actual legs represented by this outcome; untouched planned legs are not fabricated as results."
}
},
"required": [
"status",
"legs"
]
},
"running": {
"type": "boolean",
"description": "True when the operation has an execution claim and no current outcome; it does not prove a process is still running."
},
"ended": {
"type": "boolean",
"description": "True when no outcome is available and the operation is uncertain, denied or expired. Later receipts may resolve uncertainty; this does not assert that settlement is final."
},
"conversationId": {
"type": "null",
"description": "Null because this financial request was made directly, without a conversation or agent run."
},
"origin": {
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "operation",
"description": "A direct financial request with no conversation or agent run."
},
"operationId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The durable financial operation this activity belongs to."
}
},
"required": [
"type",
"operationId"
],
"description": "The direct financial operation that owns this activity."
}
},
"required": [
"key",
"title",
"createdAt",
"updatedAt",
"legs",
"running",
"ended",
"conversationId",
"origin"
]
}
],
"description": "One named financial request with its exact review, frozen plan and safe receipts, read from canonical records without reconstructing identity from journal events."
},
"ProblemDetails": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "The kind of problem as a URN, `urn:fin:error:<kind>`; stable, compare against it"
},
"title": {
"type": "string",
"description": "The kind's human title, for logs; never parse it"
},
"status": {
"type": "integer",
"minimum": 400,
"maximum": 599,
"description": "The HTTP status, repeated in the body"
},
"reason": {
"description": "The machine-readable why. One of:\n\n- `run_active` (409) — a run already holds this conversation\n- `budget_exhausted` (409) — the user's spend headroom is gone, or an operator froze it\n- `approval_not_pending` (409) — the approval was already decided or has expired, or its id does not exist or belongs to a different conversation\n- `execution_capacity` (409) — no execution capacity is free right now; `retryable` says whether to try again\n- `execution_unavailable` (409) — the execution engine could not take the work\n- `stop_pending` (409) — a stop is already in progress and its cleanup is not yet confirmed\n- `automation_changed` (409) — the `revision` sent is stale; reload the automation\n- `automation_held` (409) — an operator holds the automation; it fires again when released\n- `automation_invalid` (409) — the automation's definition cannot run as written\n- `automation_completed` (409) — the automation has finished for good and cannot fire again\n- `automation_limit` (409) — the user already has as many automations as the deployment allows\n- `profile_unknown_tool` (409) — the run profile names a tool this deployment does not have\n- `deployment_paused` (409) — an operator paused a deployment control; nothing was admitted or fired\n- `run_not_active` (409) — the run named in the path is not the conversation's live run\n- `withdrawal_changed` (409) — the withdrawal cannot be prepared or confirmed as asked: the balance no longer covers it, its terms changed or expired, or it is already in progress\n- `credential_expired` (401) — the user token has expired; obtain a fresh one\n- `account_disabled` (403) — an operator disabled the account\n- `account_not_provisioned` (412) — the identity is verified but has no account yet; call `users.ensure` first\n- `provider_unavailable` (503) — an external provider the call depends on did not answer\n- `engine_unavailable` (503) — the execution engine did not answer\n- `invalid_input` (400) — the body or query failed validation; `issues` names each field\n- `internal` (500) — a fault on our side; quote `requestId` when reporting it\n- `partner_key_required` (401) — no `X-Api-Key` header was sent\n- `partner_key_invalid` (401) — the `X-Api-Key` is unknown or revoked\n- `subject_mismatch` (403) — the `{userId}` in the path is not the token's user\n- `origin_rejected` (403) — a browser `Origin` other than the configured web origin\n- `permission_required` (403) — the operator credential lacks the scope this call needs\n- `rate_limited` (429) — the per-key or per-user limit is spent; honour `Retry-After`\n- `stream_capacity` (429) — no stream socket is free on this replica or for this user; honour `Retry-After`\n- `invalid_cursor` (400) — the `cursor` is not one this list minted",
"type": "string",
"enum": [
"run_active",
"budget_exhausted",
"approval_not_pending",
"execution_capacity",
"execution_unavailable",
"stop_pending",
"automation_changed",
"automation_held",
"automation_invalid",
"automation_completed",
"automation_limit",
"profile_unknown_tool",
"deployment_paused",
"run_not_active",
"withdrawal_changed",
"credential_expired",
"account_disabled",
"account_not_provisioned",
"provider_unavailable",
"engine_unavailable",
"invalid_input",
"internal",
"partner_key_required",
"partner_key_invalid",
"subject_mismatch",
"origin_rejected",
"permission_required",
"rate_limited",
"stream_capacity",
"invalid_cursor"
]
},
"requestId": {
"type": "string",
"description": "The id Fin used for this request; quote it when reporting a problem"
},
"retryable": {
"type": "boolean",
"description": "Whether repeating the same request later can succeed without changing it"
},
"detail": {
"description": "Only on `invalid_input`: which part of the request failed validation",
"type": "string"
},
"issues": {
"description": "Only on `invalid_input`: one entry per failing field",
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "The JSON pointer of the failing field; empty for the root object"
},
"message": {
"type": "string",
"description": "Why the field failed"
}
},
"required": [
"path",
"message"
]
}
}
},
"required": [
"type",
"title",
"status",
"requestId",
"retryable"
],
"description": "RFC 9457 problem details: what every error response carries. Never a provider's message, a query or a stack."
}
},
"responses": {
"InvalidInput": {
"description": "The request could not be read as this operation expects.\n\n- `invalid_input` — the body or query failed validation; `issues` names each field\n- `invalid_cursor` — the `cursor` is not one this list minted",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"Unauthorized": {
"description": "A credential is missing, invalid or expired.\n\n- `partner_key_required` — no `X-Api-Key` header was sent\n- `partner_key_invalid` — the `X-Api-Key` is unknown or revoked\n- `credential_expired` — the user token has expired; obtain a fresh one",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"Forbidden": {
"description": "The credentials are valid but may not do this.\n\n- `subject_mismatch` — the `{userId}` in the path is not the token's user\n- `account_disabled` — an operator disabled the account\n- `origin_rejected` — a browser `Origin` other than the configured web origin",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"NotFound": {
"description": "The resource is missing, belongs to someone else, or its id is malformed: all three answer alike.",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"AccountNotProvisioned": {
"description": "The identity is verified but has no account yet.\n\n- `account_not_provisioned` — the identity is verified but has no account yet; call `users.ensure` first",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"TooManyRequests": {
"description": "A limiter refused the request; honour `Retry-After`.\n\n- `rate_limited` — the per-key or per-user limit is spent; honour `Retry-After`",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"Internal": {
"description": "A fault on our side; quote `requestId` when reporting it.\n\n- `internal` — a fault on our side; quote `requestId` when reporting it",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
},
"Unavailable": {
"description": "The replica is draining or a dependency did not answer; `retryable` says whether to try again.\n\n- `internal` — a fault on our side; quote `requestId` when reporting it",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDetails"
}
}
}
}
},
"securitySchemes": {
"apiKey": {
"type": "apiKey",
"in": "header",
"name": "X-Api-Key"
},
"userToken": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT"
}
}
}
}