Skip to main content

Schemas

The 28 object schemas the published OpenAPI document defines.

15 min read
View MarkdownEdit on GitHub

Generated from the published OpenAPI document. Operation pages link here by schema name.

AgentRevokeLimits

What this verb reaches and what it does not. Served with every 200 so the limit travels with the act.

FieldTypeRequiredDescription
does_not_stopstringyes—
issuestringyes—
stopsarray of stringyes—

GatewayPaymentResult

FieldTypeRequiredDescription
auditarray of objectyes—
requestIdstringyes—
status"completed" | "denied" | "requires-approval" | "failed"yes—
walletobjectno—

PaymentActor

WHO triggered this spend, recorded on the receipt and read back from it. Optional, and absence is a real answer: a spend that sends no actor records null, and nothing is ever inferred from agent_id — that field names the agent the mandate was SIGNED for, which is an authority, not an event. A person acting through WhatsApp under an agent's mandate and the agent acting unattended are the same row without this field.

Type: object | object

Policy

FieldTypeRequiredDescription
agentsarray of stringyes—
configobjectyes—
createdAtstring (date-time)yes—
enabledbooleanyes—
idstringyes—
namestringyes—
ordernumberyes—
toolsarray of stringyes—
type"deny" | "budget" | "rate-limit" | "time-window" | "approval-required"yes—
updatedAtstring (date-time)yes—

PolicyCreate

FieldTypeRequiredDescription
agentsarray of stringno—
config—no—
enabledbooleanno—
namestringyes—
toolsarray of stringno—
type"deny" | "budget" | "rate-limit" | "time-window" | "approval-required"yes—

PolicyEvaluation

FieldTypeRequiredDescription
agentIdstringyes—
approvalIdstring,nullyes—
decidedAtstring,null (date-time)yes—
decidedBystring,nullyes—
decision"allow" | "deny" | "approval_required"yes—
denialReasonstring,nullyes—
estimatedCostnumber,nullyesThe cost the evaluation was judged on, for an evaluation answered by a budget rule: the number added to the agent's budget counter, or that would have passed the limit on a budget_exceeded denial. It is in the unit the rule's dailyLimit and monthlyLimit are written in, which for a payment is MAJOR units of BRL (a Pix of R$ 25,00 is 25, not 2500); it carries no currency. null for an evaluation that priced nothing (rate limits, approvals, denials by name) and for every evaluation recorded before this field existed. 0 is a cost of zero, not a missing one.
idstringyes—
projectIdstring,nullyes—
ruleIdstring,nullyes—
ruleNamestring,nullyes—
timestampstring (date-time)yes—
toolNamestringyes—

PolicyReorder

FieldTypeRequiredDescription
idsarray of stringyes—

PolicyUpdate

FieldTypeRequiredDescription
agentsarray of stringno—
config—no—
enabledbooleanno—
namestringno—
toolsarray of stringno—
type"deny" | "budget" | "rate-limit" | "time-window" | "approval-required"no—

ServerCatalogRow

FieldTypeRequiredDescription
auth_typestringyes—
categorystringyes—
connect_fieldsintegeryesHow many fields this provider's connect form has: the length of fields on its auth-schema. 0 for oauth and none.
connectablebooleanyesWhether the dashboard can connect this provider itself: a credential form with at least one field that POST /v1/connections accepts, or an oauth provider with an authorization config. False for none, which needs no connection, for a form type whose catalog row declares no refs, and for Coinbase CDP (cdp, jwt_ecdsa) while the deployment holds CDP self-serve connect.
countrystringyes—
descriptionstring,nullyes—
description_pt_brstring,nullyesdescription in Brazilian Portuguese, a faithful translation kept in the catalog. Null where the catalog has none; read description then.
engine_provisionablebooleanyesHas an engine provisioning descriptor AND is not quarantined.
engine_status"none" | "available" | "quarantined"yesCarries the reason engine_provisionable is false.
idstringyes—
namestringyes—
pkgstringyes—
provider_docs_urlstring,nullno—
provider_homepagestring,nullno—
provider_logo_fallback_urlstring,nullno—
provider_logo_urlstring,nullno—
sandbox_availablebooleanno—
sandbox_urlstring,nullno—
statusstringyes—
subaccount_provisionablebooleanyes—
tools_countintegeryes—

Session

FieldTypeRequiredDescription
closed_atstring,null (date-time)no—
created_atstring (date-time)yes—
idstringyesses_-prefixed
org_idstringyes—
project_idstringyes—
serversarray of stringyes—
status"active" | "closed" | "error"yes—
user_idstringyes—

SpendApproval

The hash of what the caller says a person approved: items_hash for this spend's lines, and for a batch batch_hash over the whole presented list. When present it is SEALED into the receipt's signed chain as its own link (chain version 4), so it cannot be stripped or altered afterwards without breaking both receipt_sig and receipt_sig_ed25519, and the receipt reads return it. It is a SEALED CLAIM by the caller, NOT a server-side approval check. The server only validates the shape; it never interprets the value, never compares it with anything and never refuses a spend because of it. It proves that this payment was sealed together with this hash, so whoever holds the approval artifact can recompute the hash and hold it against the receipt. It does not prove that anybody approved anything, or who. A malformed value, or a key other than these two, is refused with invalid_approval_hash before anything is read, held or sent. Part of what makes two requests with one attempt_id the same payment: a repeat with a different approval is attempt_id_conflict.

FieldTypeRequiredDescription
batch_hashstringnoA SHA-256 digest in lowercase hex, optionally prefixed sha256:. Sealed exactly as sent.
items_hashstringyesA SHA-256 digest in lowercase hex, optionally prefixed sha256:. Sealed exactly as sent.

SpendOutcome

FieldTypeRequiredDescription
attempt_idstringyesThe attempt this payment settled under: the attempt_id sent, or the fresh one minted when none was. Presenting it again reads this outcome instead of paying again.
auditarray of —yesThe lifecycle steps, in order, each with a timestamp and an outcome.
idempotent_replaybooleanyesTrue when this attempt_id had already settled and this is its recorded outcome, answered again: every other field is the ORIGINAL response, verbatim, and nothing was sent, held, sealed or published by this call. False on the call that settled it.
mandateobjectyes—
paymentobjectyes—
receiptobject,nullyesThe sealed Control Record. Null when there was no consumer secret to sign it with.
requestIdstringyes—
status"completed"yes—
walletobjectyes—

SpendQuote

The offer the agent approved. When present it is signed into the receipt, and at close the price and the payee are compared against what actually settled. A divergence is RECORDED on the receipt; it does not abort settlement.

FieldTypeRequiredDescription
atstring (date-time)noWhen the offer was presented, RFC 3339 with an offset, in UTC years 0001-9999. Sealed into the receipt's chain as that instant in UTC with milliseconds. Anything else is refused with invalid_receipt_timestamp before anything is read, held or sent.
payeestringyes—
price_minorintegeryes—
resourcestringyes—
sellerstringyes—
session_idstringno—

TedDestination

The destination of a TED, the Brazilian same-day bank wire. Present this object on a spend to send a wire instead of a Pix: its presence is what switches the rail, and what makes the three TED requirements on those operations bind. Money leaves the consumer's own sub-account, never a pooled one.

FieldTypeRequiredDescription
accountstringyesAccount, including the check digit.
account_type"CC" | "CI" | "PG" | "PP"noChecking, investment, payment or savings. This is the TED product's OWN enum, different from the Pix account enum (CACC, SLRY, SVGS, TRAN): they are distinct endpoints and distinct products at the provider.
bankstringyesISPB of the destination institution, digits only.
branchstringyesBranch, with no separate check digit.
client_finalitystringnoThe banking partner's purpose code. Defaults to 1, a generic transfer.
namestringyesName of the destination account holder.
person_type"F" | "J"noA natural person or a legal entity.
tax_idstringyesCPF or CNPJ of the destination account holder.

ToolCall

FieldTypeRequiredDescription
called_atstring (date-time)yes—
duration_msinteger,nullyes—
error_codestring,nullyes—
failover_trail—no—
idstringyestc_-prefixed: the bigserial with a tc_ prefix prepended
input—no—
output—no—
routing—no—
server_idstringyes—
session_idstringyes—
status"running" | "success" | "error"yes—
tool_namestringyes—

Trigger

FieldTypeRequiredDescription
actionobject | object | objectyesWhat the trigger does when it fires. Absent means webhook, the signed POST to webhook_url. human_review puts an item in the approvals inbox; pause_agent suspends the agent named by agent_did, or the agent the event names when agent_did is absent. Neither moves money. webhook_url is required for webhook and refused for the other two.
conditionobject,nullyesNull fires on every event of the type.
created_atstring (date-time)yes—
eventstringyes—
event_knownbooleanyesWhether event is a type this build emits. false means the subscription exists but will not fire until a release starts emitting that name: it was accepted so you can subscribe ahead of a release, not because it matches.
idstringyes—
last_run_atstring,null (date-time)yes—
namestringyes—
org_idstringyes—
project_idstring,nullyesnullable during the 0014→0015 rollout
server_idstring,nullyes—
signing_enabledbooleanyesWhether a signing secret exists. The secret itself is never read back — the serializer drops the vault reference and reports only this.
statusstringyes—
total_runsintegeryes—
webhook_urlstring,nullyes—

TriggerCreated

Type: —

Wallet

FieldTypeRequiredDescription
agent_idstring,nullyes—
balancesarray of WalletBalanceno—
closed_atstring,null (date-time)yes—
created_atstring (date-time)yes—
display_namestringyes—
idstringyes—
metadataobjectyes—
org_idstringyes—
project_idstringyes—
status"active" | "frozen" | "closed"yes—

WalletAnomalyResolve

FieldTypeRequiredDescription
notestringno—
status"resolved" | "dismissed"yes—

WalletBalance

FieldTypeRequiredDescription
available_minorstringyesbigint as string
balance_minorstringyesbigint as string
currency"BRL" | "USD" | "MXN" | "COP" | "ARS" | "USDC" | "BRLA"yes—
updated_atstring (date-time)yes—
wallet_idstringyes—

WalletCreate

FieldTypeRequiredDescription
agent_idstring,nullno—
currency"BRL" | "USD" | "MXN" | "COP" | "ARS" | "USDC" | "BRLA"yes—
display_namestringyes—
metadataobjectno—

WalletExecute

FieldTypeRequiredDescription
amountnumberyes—
attempt_idstringno—
currency"BRL" | "USD" | "MXN" | "COP" | "ARS" | "USDC" | "BRLA"yes—
descriptionstringyes—
mandate_idstringyes—
metadataobjectno—
preferred_methodstringno—
purposestringno—
recipientstringyes—
target_currency"USD" | "EUR" | "BRL" | "MXN"no—

WalletFundingSource

FieldTypeRequiredDescription
connection_idstringyes—
created_atstring (date-time)yes—
currency"BRL" | "USD" | "MXN" | "COP" | "ARS" | "USDC" | "BRLA"yes—
enabledbooleanyes—
metadataobjectyes—
wallet_idstringyes—

WalletFundingSourceBind

FieldTypeRequiredDescription
connection_idstringyes—
currency"BRL" | "USD" | "MXN" | "COP" | "ARS" | "USDC" | "BRLA"yes—
metadataobjectno—

WalletLedgerEntry

FieldTypeRequiredDescription
amount_minorstringyesbigint signed minor units
attempt_idstring,nullyes—
currency"BRL" | "USD" | "MXN" | "COP" | "ARS" | "USDC" | "BRLA"yes—
external_refstring,nullyes—
idstringyesbigserial as string
kind"fund" | "hold" | "release" | "debit" | "reconcile" | "reverse" | "fee"yes—
mandate_idstring,nullyes—
metadataobjectyes—
org_idstringyes—
posted_atstring (date-time)yes—
reconciled_atstring,null (date-time)yes—
wallet_idstringyes—

WalletLedgerPost

FieldTypeRequiredDescription
amount_minorstringyes—
attempt_idstring,nullno—
currency"BRL" | "USD" | "MXN" | "COP" | "ARS" | "USDC" | "BRLA"yes—
external_refstring,nullno—
kind"fund" | "hold" | "release" | "debit" | "reconcile" | "reverse" | "fee"yes—
mandate_idstring,nullno—
metadataobjectno—
org_idstringyes—
wallet_idstringyes—

WalletReconAnomaly

FieldTypeRequiredDescription
amount_minorstring,nullyes—
currency"BRL" | "USD" | "MXN" | "COP" | "ARS" | "USDC" | "BRLA"yes—
detected_atstring (date-time)yes—
external_refstring,nullyes—
idstringyes—
kind"debit_without_receipt" | "receipt_without_debit"yes—
ledger_entry_idstring,nullyes—
metadataobjectyes—
org_idstringyes—
resolution_notestring,nullyes—
resolved_atstring,null (date-time)yes—
status"open" | "resolved" | "dismissed"yes—
wallet_idstringyes—

Whoami

FieldTypeRequiredDescription
keyobjectyes—
organizationobjectyes—
projectobjectyes—
userobject,nullyesAlways null for an API key and for an OAuth token: a key is scoped to an org and a project, not to a user, so there is no person to name. Identify the credential by organization, project and key. A person appears only on the service path the dashboard uses, and is the member it is acting for.
Schemas | CodeSpar