{"openapi":"3.1.0","components":{"headers":{"RateLimitLimit":{"description":"How many requests you may make in the current time window. Not sent on cached responses or `402` payment challenges.","schema":{"type":"integer"}},"RateLimitRemaining":{"description":"How many requests you have left in the current window before you are rate-limited. Not sent on cached responses or `402` payment challenges.","schema":{"type":"integer"}},"RateLimitReset":{"description":"When the current window resets, as a Unix timestamp in seconds. Not sent on cached responses or `402` payment challenges.","schema":{"type":"integer"}},"RateLimitScope":{"description":"Which quota this request counted against (e.g. `data:read`). Not sent on cached responses or `402` payment challenges.","schema":{"type":"string"}},"RetryAfter":{"description":"How many seconds to wait before trying again. Sent with `429` (rate-limited) responses.","schema":{"type":"integer"}},"TempoRequestId":{"description":"A unique id for this request, returned on every response (and as `requestId` in error bodies). Include it when contacting support so we can find your request.","schema":{"type":"string"}},"WwwAuthenticate":{"description":"On a `402` response, the payment challenge to satisfy. Use it to build the `Authorization: Payment` credential and retry the request.","schema":{"type":"string"}}},"responses":{"InternalError":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InternalError"},"example":{"error":{"code":"internal_error","message":"Internal server error."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Internal server error."},"PaymentRequired":{"description":"Payment required. This endpoint accepts MPP payment, and the request either exceeded free quota or needs a paid request credential. The challenge is protocol-native (handled by mppx), not the JSON error envelope: read the `WWW-Authenticate` header and retry with `Authorization: Payment <credential>`. A successful paid response carries `Payment-Receipt`.","headers":{"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}}},"RateLimited":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"},"example":{"error":{"code":"rate_limit_exceeded","message":"Rate limit exceeded."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Rate limit exceeded. On endpoints that accept MPP, over-quota unpaid requests return `402 Payment Required` instead.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"RequestTimeout":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestTimeoutError"},"example":{"error":{"code":"request_timeout","message":"Request timed out"},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Request timed out. The request did not complete within the 60-second deadline; retry it."}},"securitySchemes":{"apiKey":{"description":"Your Tempo API key, sent in the `tempo-api-key` request header. This is the canonical and recommended API-key header.","in":"header","name":"tempo-api-key","type":"apiKey"},"bearerAuth":{"description":"Compatibility alternative for API keys: send `Authorization: Bearer <key>`. Prefer the `tempo-api-key` header when your HTTP client supports custom headers.","scheme":"bearer","type":"http"},"queryApiKey":{"description":"Supported query-string alternative for API keys. Prefer `tempo-api-key` because URLs may be logged by clients and infrastructure.","in":"query","name":"key","type":"apiKey"},"session":{"description":"Cookie session established by sign-in (`POST /v1/auth/siwe`). Clients may also send the session token as `Authorization: Bearer <token>`.","in":"cookie","name":"accounts_auth","type":"apiKey"}},"schemas":{"ErrorDetail":{"type":"object","properties":{"message":{"type":"string","description":"A specific thing that went wrong, in plain language (e.g. why a field failed validation)."},"path":{"description":"Where the problem is, as a path into your request (e.g. `[\"query\", \"limit\"]`). Present for validation errors.","type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}}},"required":["message"],"description":"A single problem with the request."},"InternalError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["internal_error"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"RateLimitError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["payment_required","rate_limit_exceeded"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"RequestTimeoutError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["request_timeout"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ApiKeyMalformedOrBodyInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","body_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ActivityEvent":{"type":"object","properties":{"address":{"description":"Contract address that emitted the log.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"args":{"description":"Decoded event arguments keyed by parameter name, present when the log matched a known ABI. Integer values are decimal strings.","type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"data":{"description":"Unindexed log data as a hex string (`0x` when empty).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"eventName":{"description":"Event name decoded from the `viem/tempo` ABIs, present when the log matched a known ABI.","examples":["Transfer"],"type":"string"},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this log within the block.","examples":[4]},"title":{"description":"Human-readable label for the decoded event, present when the log matched a known ABI.","examples":["Token transferred"],"type":"string"},"topics":{"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"description":"Raw log topics; the first topic is the event signature hash."}},"required":["address","data","logIndex","topics"],"description":"One transaction log. Decoded fields (`eventName`/`args`/`title`) are present when it matched a known Tempo ABI; otherwise only the raw fields are set."},"ActivityItemAssetsDeposited":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"assets":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"caller":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"receiver":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"shares":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"status":{"type":"string","const":"completed"},"vault":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["assets","caller","receiver","shares","signer","status","vault"]},"type":{"type":"string","const":"assets-deposited"}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Assets deposited"},"ActivityItemSharesDeposited":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"caller":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"receivedEngineShares":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"receiver":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"requestedVenueShares":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"shares":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"status":{"type":"string","const":"completed"},"vault":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["caller","receivedEngineShares","receiver","requestedVenueShares","shares","signer","status","vault"]},"type":{"type":"string","const":"shares-deposited"}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Shares deposited"},"ActivityItemSharesRedeemed":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"assets":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"caller":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"receiver":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"shares":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"status":{"type":"string","const":"completed"},"vault":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["assets","caller","receiver","shares","signer","status","vault"]},"type":{"type":"string","const":"shares-redeemed"}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Shares redeemed"},"ActivityItemAssetsWithdrawn":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"assets":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"caller":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"sharesBurned":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"receiver":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"status":{"type":"string","const":"completed"},"vault":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["assets","caller","sharesBurned","receiver","signer","status","vault"]},"type":{"type":"string","const":"assets-withdrawn"}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Assets withdrawn"},"ActivityItemSharesRedemptionRequested":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"receiver":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"requestId":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"requester":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"shares":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"status":{"type":"string","const":"pending"},"vault":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["receiver","requestId","requester","shares","signer","status","vault"]},"type":{"type":"string","const":"shares-redemption-requested"}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Share redemption requested"},"ActivityItemSharesRedemptionFinalized":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"asset":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"assets":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"receiver":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"requestId":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"shares":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"status":{"type":"string","const":"completed"},"vault":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["asset","assets","receiver","requestId","shares","signer","status","vault"]},"type":{"type":"string","const":"shares-redemption-finalized"}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Share redemption finalized"},"ActivityItemSharesRedemptionCancelled":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"receiver":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"requestId":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"shares":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"status":{"type":"string","const":"cancelled"},"vault":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["receiver","requestId","shares","signer","status","vault"]},"type":{"type":"string","const":"shares-redemption-cancelled"}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Share redemption cancelled"},"ActivityItemPrivateAssetsDeposited":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"actionId":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"assets":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"inputAmount":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"inputToken":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"shares":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"status":{"type":"string","const":"completed"},"vault":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"zoneDepositHash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["actionId","assets","inputAmount","inputToken","shares","signer","status","vault","zoneDepositHash"]},"type":{"type":"string","const":"private-assets-deposited"}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Private assets deposited"},"ActivityItemPrivateSharesRedeemed":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"actionId":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"assets":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"outputAmount":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"outputToken":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"shares":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"status":{"type":"string","const":"completed"},"vault":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"zoneDepositHash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["actionId","assets","outputAmount","outputToken","shares","signer","status","vault","zoneDepositHash"]},"type":{"type":"string","const":"private-shares-redeemed"}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Private shares redeemed"},"ValuationValue":{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The holding’s nominal value, as a decimal string in `currency`.","examples":["1.50"]},"currency":{"type":"string","description":"The denomination currency of this value.","examples":["USD"]}},"required":["amount","currency"],"description":"The holding’s nominal value in the requested denomination."},"ActivityValuedAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]},"valuation":{"description":"The amount’s nominal value in the requested `valuation.currency`. `null` when the token is unverified, its display currency has no rate, or rates were unavailable.","anyOf":[{"$ref":"#/components/schemas/ValuationValue"},{"type":"null"}]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token amount carrying its nominal value in the requested denomination."},"ActivityToken":{"type":"object","properties":{"address":{"description":"The TIP-20 token contract address on Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"currency":{"type":"string","description":"The currency label for this token, such as `USD` for USD-denominated stablecoins.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"logoUri":{"description":"A URL for the token’s logo image, when one is available.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"},"name":{"type":"string","description":"The token’s human-readable name.","examples":["Bridged USDC (Stargate)"]},"symbol":{"type":"string","description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC.e"]},"verified":{"type":"boolean","description":"Whether this token is in Tempo’s curated verified token list.","examples":[true]}},"required":["address","currency","decimals","name","symbol"],"description":"Token the flipped order rests with."},"ActivityTransfer":{"type":"object","properties":{"attribution":{"description":"MPP service name matched from the transfer memo, when Tempo recognizes the fingerprint.","examples":["Acme Payments"],"type":"string"},"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block number where this transfer was included.","examples":[12345678]},"destinationAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"destinationToken":{"$ref":"#/components/schemas/ActivityToken"},"direction":{"type":"string","enum":["in","out"],"description":"The address’s side of the transfer: `in` means received, and `out` means sent."},"memo":{"description":"Text memo attached to the transfer, when one was provided.","examples":["Invoice #1234"],"type":"string"},"recipient":{"description":"Address that received the transfer.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"sender":{"description":"Address that sent the transfer.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"description":"For outbound transfers, who signed it: `self` or the access-key address. Omitted for inbound transfers.","anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}]},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"},"timestamp":{"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":"Block timestamp for the transfer.","examples":["2024-01-01T00:00:00Z"]},"transactionHash":{"description":"Transaction hash that contains this transfer.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["blockNumber","direction","recipient","sender","sourceAmount","sourceToken","timestamp","transactionHash"],"description":"Transfer details with feed-relative direction and signer fields."},"ActivityItemTransfer":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"$ref":"#/components/schemas/ActivityTransfer"},"type":{"type":"string","const":"transfer","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Token transferred"},"ActivityItemMint":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"recipient":{"description":"Address that received the transfer.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"}},"required":["recipient","sourceAmount","sourceToken"],"description":"A token mint activity."},"type":{"type":"string","const":"mint","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Token minted"},"ActivityItemBurn":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"sender":{"description":"Address whose token balance was burned.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"}},"required":["sender","signer","sourceAmount","sourceToken"],"description":"A token burn activity."},"type":{"type":"string","const":"burn","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Token burned"},"ActivityItemSwap":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"destinationAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"destinationToken":{"$ref":"#/components/schemas/ActivityToken"},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"}},"required":["destinationAmount","destinationToken","signer","sourceAmount","sourceToken"],"description":"Swap inferred from token transfers through the DEX precompile. This feed entry is a summary, so per-fill details, route, and rate are not included."},"type":{"type":"string","const":"swap","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Tokens swapped"},"ActivityItemApproval":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"},"spender":{"description":"Address allowed to spend the approved amount.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["signer","sourceAmount","sourceToken","spender"],"description":"A token allowance approval activity."},"type":{"type":"string","const":"approval","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Allowance approved"},"ActivityItemSessionClosed":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"refund":{"$ref":"#/components/schemas/ActivityToken"},"refundAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["signer"],"description":"A payment-channel session close activity."},"type":{"type":"string","const":"session-closed","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Session closed"},"ActivityItemAccessKeyCreated":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"account":{"description":"Account this access key was authorized for.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"expiry":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Access-key expiration time as a Unix timestamp.","examples":[1735689600]},"publicKey":{"description":"Public key for the authorized access key.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signatureType":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Signature type used by the access key.","examples":[0]}},"required":["account","expiry","publicKey","signatureType"],"description":"An access key was created for the account."},"type":{"type":"string","const":"access-key-created","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Access key created"},"ActivityItemAccessKeyRevoked":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"account":{"description":"Account this access key was revoked from.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"publicKey":{"description":"Public key for the revoked access key.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["account","publicKey"],"description":"An access key was revoked from the account."},"type":{"type":"string","const":"access-key-revoked","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Access key revoked"},"ActivityItemTokenCreated":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"address":{"description":"Contract address of the new TIP-20 token.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"currency":{"type":"string","description":"Display currency for the token, such as USD.","examples":["USD"]},"name":{"type":"string","description":"Human-readable token name.","examples":["Tempo USD"]},"symbol":{"type":"string","description":"Token ticker symbol.","examples":["TUSD"]}},"required":["address","currency","name","symbol"],"description":"A new TIP-20 token was created."},"type":{"type":"string","const":"token-created","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Token created"},"ActivityItemBurnBlocked":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"sender":{"description":"Address whose blocked balance was burned by policy.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"}},"required":["sender","signer","sourceAmount","sourceToken"],"description":"A compliance burn of funds the receive policy blocked, distinct from a normal burn."},"type":{"type":"string","const":"burn-blocked","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Burn blocked"},"ActivityItemChannelOpened":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"channelId":{"description":"Identifier of the payment channel.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"payee":{"description":"Address that receives payments from the channel.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"payer":{"description":"Address that funds the channel.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"}},"required":["channelId","payee","payer","signer","sourceAmount","sourceToken"],"description":"A payment channel was opened and funded."},"type":{"type":"string","const":"channel-opened","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Channel opened"},"ActivityItemChannelFunded":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"channelId":{"description":"Identifier of the payment channel.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"}},"required":["channelId","signer","sourceAmount","sourceToken"],"description":"A payment channel deposit was topped up."},"type":{"type":"string","const":"channel-funded","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Channel funded"},"ActivityItemChannelSettled":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"channelId":{"description":"Identifier of the payment channel.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"payee":{"description":"Address that received the settled payment.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"payer":{"description":"Address that funded the channel.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"}},"required":["channelId","payee","payer","signer","sourceAmount","sourceToken"],"description":"An incremental payment-channel settlement to the payee."},"type":{"type":"string","const":"channel-settled","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Channel settled"},"ActivityItemChannelClosed":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"channelId":{"description":"Identifier of the payment channel.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"payee":{"description":"Address that receives payments from the channel.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"payer":{"description":"Address that funded the channel.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"refund":{"$ref":"#/components/schemas/ActivityToken"},"refundAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"}},"required":["channelId","payee","payer","signer"],"description":"A payment channel was closed, paying out the payee and refunding the payer."},"type":{"type":"string","const":"channel-closed","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Channel closed"},"ActivityItemChannelCloseCancelled":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"channelId":{"description":"Identifier of the payment channel.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"payee":{"description":"Address that receives payments from the channel.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"payer":{"description":"Address that funds the channel.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["channelId","payee","payer","signer"],"description":"A pending payment-channel close request was cancelled."},"type":{"type":"string","const":"channel-close-cancelled","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Channel close cancelled"},"ActivityItemOrderPlaced":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"orderId":{"type":"string","pattern":"^\\d+$","description":"Identifier of the DEX order.","examples":["1000000"]},"side":{"type":"string","enum":["bid","ask"],"description":"Order side: `bid` buys the base token, `ask` sells it.","examples":["bid"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"},"tick":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Price tick the order was placed at.","examples":[0]}},"required":["orderId","side","signer","sourceAmount","sourceToken","tick"],"description":"A limit order was placed on the stablecoin DEX."},"type":{"type":"string","const":"order-placed","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Order placed"},"ActivityItemOrderCancelled":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"orderId":{"type":"string","pattern":"^\\d+$","description":"Identifier of the cancelled DEX order.","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["orderId","signer"],"description":"A DEX order was cancelled."},"type":{"type":"string","const":"order-cancelled","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Order cancelled"},"ActivityItemFeesDistributed":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"},"validator":{"description":"Validator that received the distributed fees.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["signer","sourceAmount","sourceToken","validator"],"description":"Accrued validator fees were distributed."},"type":{"type":"string","const":"fees-distributed","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Fees distributed"},"ActivityItemFeeRebalanceSwap":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"destinationAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"destinationToken":{"$ref":"#/components/schemas/ActivityToken"},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"},"swapper":{"description":"Address that performed the rebalance swap.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["destinationAmount","destinationToken","signer","sourceAmount","sourceToken","swapper"],"description":"A fee-AMM rebalance swap between a validator and user token."},"type":{"type":"string","const":"fee-rebalance-swap","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Fees rebalanced"},"ActivityItemRewardDistributed":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"funder":{"description":"Address that funded the reward pool.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"}},"required":["funder","signer","sourceAmount","sourceToken"],"description":"A token reward pool was funded."},"type":{"type":"string","const":"reward-distributed","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Reward distributed"},"ActivityItemRewardRecipientSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"holder":{"description":"Holder whose rewards were redirected.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"recipient":{"description":"Address that now receives the holder’s rewards.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["holder","recipient","signer"],"description":"A holder redirected where their token rewards are paid."},"type":{"type":"string","const":"reward-recipient-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Reward recipient set"},"ActivityItemSpendingLimitUpdated":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"account":{"description":"Account the access key belongs to.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"publicKey":{"description":"Public key of the access key whose limit changed.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"}},"required":["account","publicKey","signer","sourceAmount","sourceToken"],"description":"An access key’s per-token spending limit was updated."},"type":{"type":"string","const":"spending-limit-updated","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Spending limit updated"},"ActivityItemOrderFilled":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"amountFilled":{"type":"string","pattern":"^\\d+$","description":"Amount filled, in the token’s smallest unit.","examples":["1000000"]},"maker":{"description":"Maker whose resting order was filled.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"orderId":{"type":"string","pattern":"^\\d+$","description":"Identifier of the filled DEX order.","examples":["1000000"]},"partialFill":{"type":"boolean","description":"Whether the order was only partially filled.","examples":[true]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"taker":{"description":"Taker that filled the order.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["amountFilled","maker","orderId","partialFill","signer","taker"],"description":"A resting DEX order was filled by a taker."},"type":{"type":"string","const":"order-filled","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Order filled"},"ActivityItemOrderFlipped":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"flipTick":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Price tick the flipped order was placed at.","examples":[0]},"maker":{"description":"Maker the order belongs to.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"orderId":{"type":"string","pattern":"^\\d+$","description":"Identifier of the DEX order.","examples":["1000000"]},"side":{"type":"string","enum":["bid","ask"],"description":"Side of the flipped order: `bid` buys the base token, `ask` sells it.","examples":["bid"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"sourceAmount":{"$ref":"#/components/schemas/ActivityValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ActivityToken"},"tick":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Price tick the original order filled at.","examples":[0]}},"required":["flipTick","maker","orderId","side","signer","sourceAmount","sourceToken","tick"],"description":"A flip order was rotated to the opposite side after filling."},"type":{"type":"string","const":"order-flipped","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Order flipped"},"ActivityItemPairCreated":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"base":{"description":"Base token of the new trading pair.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"key":{"description":"Identifier of the trading pair.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"quote":{"description":"Quote token of the new trading pair.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["base","key","quote","signer"],"description":"A new trading pair was created on the stablecoin DEX."},"type":{"type":"string","const":"pair-created","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Trading pair created"},"ActivityItemTokenPauseSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"paused":{"type":"boolean","description":"Whether the token is now paused.","examples":[true]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"updater":{"description":"Address that changed the pause state.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["paused","signer","updater"],"description":"A TIP-20 token was paused or unpaused."},"type":{"type":"string","const":"token-pause-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Token pause set"},"ActivityItemTokenSupplyCapSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"supplyCap":{"type":"string","pattern":"^\\d+$","description":"New maximum total supply, in the token’s smallest unit.","examples":["1000000"]},"updater":{"description":"Address that changed the supply cap.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["signer","supplyCap","updater"],"description":"A TIP-20 token’s supply cap was changed."},"type":{"type":"string","const":"token-supply-cap-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Token supply cap set"},"ActivityItemTokenTransferPolicySet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"policyId":{"type":"string","pattern":"^\\d+$","description":"Identifier of the transfer policy now linked to the token.","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"updater":{"description":"Address that linked the transfer policy.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["policyId","signer","updater"],"description":"A TIP-20 token’s transfer policy was changed."},"type":{"type":"string","const":"token-transfer-policy-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Token transfer policy set"},"ActivityItemTokenQuoteTokenSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"quoteToken":{"description":"Token now used as the quote token.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"updater":{"description":"Address that changed the quote token.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["quoteToken","signer","updater"],"description":"A TIP-20 token’s quote token was changed."},"type":{"type":"string","const":"token-quote-token-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Token quote token set"},"ActivityItemTokenNextQuoteTokenSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"nextQuoteToken":{"description":"Token queued to become the next quote token.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"updater":{"description":"Address that queued the next quote token.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["nextQuoteToken","signer","updater"],"description":"A TIP-20 token’s next quote token was queued."},"type":{"type":"string","const":"token-next-quote-token-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Token next quote token set"},"ActivityItemTokenLogoSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"logoUri":{"type":"string","description":"New logo URL for the token.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"updater":{"description":"Address that changed the logo.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["logoUri","signer","updater"],"description":"A TIP-20 token’s logo URI was changed."},"type":{"type":"string","const":"token-logo-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Token logo set"},"ActivityItemRoleMembershipSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"account":{"description":"Account whose role membership changed.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"granted":{"type":"boolean","description":"Whether the role was granted (`true`) or revoked (`false`).","examples":[true]},"role":{"description":"Identifier of the role (a `bytes32` role hash).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"sender":{"description":"Address that made the role change.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["account","granted","role","sender","signer"],"description":"A role was granted to or revoked from an account."},"type":{"type":"string","const":"role-membership-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Role membership set"},"ActivityItemRoleAdminSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"newAdminRole":{"description":"Identifier of the new admin role.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"role":{"description":"Identifier of the role whose admin changed.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"sender":{"description":"Address that changed the admin role.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["newAdminRole","role","sender","signer"],"description":"A role’s admin role was changed."},"type":{"type":"string","const":"role-admin-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Role admin set"},"ActivityItemFeeUserTokenSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"token":{"description":"Token the user will pay fees in.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"user":{"description":"Address whose fee token was set.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["signer","token","user"],"description":"An account’s fee-payment token was set."},"type":{"type":"string","const":"fee-user-token-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Fee user token set"},"ActivityItemFeeValidatorTokenSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"token":{"description":"Token the validator will be paid fees in.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"validator":{"description":"Validator whose payout token was set.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["signer","token","validator"],"description":"A validator’s fee-payout token was set."},"type":{"type":"string","const":"fee-validator-token-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Fee validator token set"},"ActivityItemPolicyCreated":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"policyId":{"type":"string","pattern":"^\\d+$","description":"Identifier of the created policy.","examples":["1000000"]},"policyType":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Numeric policy type.","examples":[0]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"updater":{"description":"Address that created the policy.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["policyId","policyType","signer","updater"],"description":"A TIP-403 compliance policy was created."},"type":{"type":"string","const":"policy-created","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Policy created"},"ActivityItemPolicyAdminSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"admin":{"description":"New admin of the policy.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"policyId":{"type":"string","pattern":"^\\d+$","description":"Identifier of the policy.","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"updater":{"description":"Address that changed the policy admin.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["admin","policyId","signer","updater"],"description":"A TIP-403 policy’s admin was changed."},"type":{"type":"string","const":"policy-admin-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Policy admin set"},"ActivityItemWhitelistUpdated":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"account":{"description":"Account whose whitelist status changed.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"allowed":{"type":"boolean","description":"Whether the account is now whitelisted.","examples":[true]},"policyId":{"type":"string","pattern":"^\\d+$","description":"Identifier of the policy.","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"updater":{"description":"Address that changed the whitelist.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["account","allowed","policyId","signer","updater"],"description":"An account’s whitelist status on a policy was changed."},"type":{"type":"string","const":"whitelist-updated","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Whitelist updated"},"ActivityItemBlacklistUpdated":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"account":{"description":"Account whose blacklist status changed.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"policyId":{"type":"string","pattern":"^\\d+$","description":"Identifier of the policy.","examples":["1000000"]},"restricted":{"type":"boolean","description":"Whether the account is now blacklisted.","examples":[true]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"updater":{"description":"Address that changed the blacklist.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["account","policyId","restricted","signer","updater"],"description":"An account’s blacklist status on a policy was changed."},"type":{"type":"string","const":"blacklist-updated","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Blacklist updated"},"ActivityItemCompoundPolicyCreated":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"creator":{"description":"Address that created the compound policy.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"mintRecipientPolicyId":{"type":"string","pattern":"^\\d+$","description":"Sub-policy applied to mint recipients.","examples":["1000000"]},"policyId":{"type":"string","pattern":"^\\d+$","description":"Identifier of the created compound policy.","examples":["1000000"]},"recipientPolicyId":{"type":"string","pattern":"^\\d+$","description":"Sub-policy applied to recipients.","examples":["1000000"]},"senderPolicyId":{"type":"string","pattern":"^\\d+$","description":"Sub-policy applied to senders.","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["creator","mintRecipientPolicyId","policyId","recipientPolicyId","senderPolicyId","signer"],"description":"A TIP-403 compound policy was created from sub-policies."},"type":{"type":"string","const":"compound-policy-created","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Compound policy created"},"ActivityItemMasterRegistered":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"masterAddress":{"description":"Address of the registered master contract.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"masterId":{"description":"Identifier of the master contract (a `bytes4` selector).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["masterAddress","masterId","signer"],"description":"A master contract was registered in the address registry."},"type":{"type":"string","const":"master-registered","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Master registered"},"ActivityItemNonceIncremented":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"account":{"description":"Account whose nonce advanced.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"nonce":{"type":"string","pattern":"^\\d+$","description":"New nonce value.","examples":["1000000"]},"nonceKey":{"type":"string","pattern":"^\\d+$","description":"Nonce key that was advanced.","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["account","nonce","nonceKey","signer"],"description":"An account or access-key nonce was advanced."},"type":{"type":"string","const":"nonce-incremented","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Nonce incremented"},"ActivityItemKeyAuthorizationWitness":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"account":{"description":"Account the witness belongs to.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"witness":{"description":"Witness commitment recorded for the key authorization.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]}},"required":["account","signer","witness"],"description":"A key-authorization witness was recorded."},"type":{"type":"string","const":"key-authorization-witness","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Key authorization witnessed"},"ActivityItemKeyAuthorizationWitnessBurned":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"account":{"description":"Account the witness belonged to.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"witness":{"description":"Witness commitment that was consumed.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]}},"required":["account","signer","witness"],"description":"A key-authorization witness was consumed."},"type":{"type":"string","const":"key-authorization-witness-burned","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Key authorization witness burned"},"ActivityItemValidatorAdded":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"egress":{"type":"string","description":"Egress network endpoint.","examples":["https://validator.example.com:8443"]},"feeRecipient":{"description":"Validator fee recipient address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"index":{"type":"string","pattern":"^\\d+$","description":"Validator index.","examples":["1000000"]},"ingress":{"type":"string","description":"Ingress network endpoint.","examples":["https://validator.example.com:8443"]},"publicKey":{"description":"Validator public key.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"validator":{"description":"Validator address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["egress","feeRecipient","index","ingress","publicKey","signer","validator"],"description":"A validator was added to the validator set."},"type":{"type":"string","const":"validator-added","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Validator added"},"ActivityItemValidatorDeactivated":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"index":{"type":"string","pattern":"^\\d+$","description":"Validator index.","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"validator":{"description":"Validator address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["index","signer","validator"],"description":"A validator was deactivated."},"type":{"type":"string","const":"validator-deactivated","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Validator deactivated"},"ActivityItemValidatorRotated":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"caller":{"description":"Address that rotated the validator.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"deactivatedIndex":{"type":"string","pattern":"^\\d+$","description":"Index of the deactivated validator entry.","examples":["1000000"]},"egress":{"type":"string","description":"Egress network endpoint.","examples":["https://validator.example.com:8443"]},"index":{"type":"string","pattern":"^\\d+$","description":"New validator index.","examples":["1000000"]},"ingress":{"type":"string","description":"Ingress network endpoint.","examples":["https://validator.example.com:8443"]},"newPublicKey":{"description":"New validator public key.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"oldPublicKey":{"description":"Previous validator public key.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"validator":{"description":"Validator address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["caller","deactivatedIndex","egress","index","ingress","newPublicKey","oldPublicKey","signer","validator"],"description":"A validator’s keys and endpoints were rotated."},"type":{"type":"string","const":"validator-rotated","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Validator rotated"},"ActivityItemValidatorFeeRecipientSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"caller":{"description":"Address that changed the fee recipient.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"feeRecipient":{"description":"New validator fee recipient.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"index":{"type":"string","pattern":"^\\d+$","description":"Validator index.","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["caller","feeRecipient","index","signer"],"description":"A validator’s fee recipient was changed."},"type":{"type":"string","const":"validator-fee-recipient-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Validator fee recipient set"},"ActivityItemValidatorIpSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"caller":{"description":"Address that changed the endpoints.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"egress":{"type":"string","description":"Egress network endpoint.","examples":["https://validator.example.com:8443"]},"index":{"type":"string","pattern":"^\\d+$","description":"Validator index.","examples":["1000000"]},"ingress":{"type":"string","description":"Ingress network endpoint.","examples":["https://validator.example.com:8443"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["caller","egress","index","ingress","signer"],"description":"A validator’s network endpoints were changed."},"type":{"type":"string","const":"validator-ip-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Validator IP set"},"ActivityItemValidatorOwnershipTransferred":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"caller":{"description":"Address that transferred ownership.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"index":{"type":"string","pattern":"^\\d+$","description":"Validator index.","examples":["1000000"]},"newAddress":{"description":"New validator owner address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"oldAddress":{"description":"Previous validator owner address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["caller","index","newAddress","oldAddress","signer"],"description":"A validator’s owner address was changed."},"type":{"type":"string","const":"validator-ownership-transferred","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Validator ownership transferred"},"ActivityItemOwnershipTransferred":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"newOwner":{"description":"New contract owner.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"oldOwner":{"description":"Previous contract owner.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["newOwner","oldOwner","signer"],"description":"Contract ownership was transferred."},"type":{"type":"string","const":"ownership-transferred","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Ownership transferred"},"ActivityItemValidatorMigrated":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"index":{"type":"string","pattern":"^\\d+$","description":"Validator index.","examples":["1000000"]},"publicKey":{"description":"Validator public key.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"validator":{"description":"Validator address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["index","publicKey","signer","validator"],"description":"A validator was migrated."},"type":{"type":"string","const":"validator-migrated","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Validator migrated"},"ActivityItemValidatorMigrationSkipped":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"index":{"type":"string","pattern":"^\\d+$","description":"Validator index.","examples":["1000000"]},"publicKey":{"description":"Validator public key.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."},"validator":{"description":"Validator address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["index","publicKey","signer","validator"],"description":"A validator migration was skipped."},"type":{"type":"string","const":"validator-migration-skipped","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Validator migration skipped"},"ActivityItemNetworkIdentityRotationEpochSet":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"nextEpoch":{"type":"string","pattern":"^\\d+$","description":"Epoch the rotation is scheduled for.","examples":["1000000"]},"previousEpoch":{"type":"string","pattern":"^\\d+$","description":"Previous rotation epoch.","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["nextEpoch","previousEpoch","signer"],"description":"A network-identity rotation epoch was scheduled."},"type":{"type":"string","const":"network-identity-rotation-epoch-set","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Network identity rotation epoch set"},"ActivityItemInitialized":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"height":{"type":"string","pattern":"^\\d+$","description":"Block height at initialization.","examples":["1000000"]},"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["height","signer"],"description":"A contract was initialized."},"type":{"type":"string","const":"initialized","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Initialized"},"ActivityItemUnknown":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"Your role in the transaction: `outgoing` when you sent or paid for it, `incoming` when it happened to you (someone else initiated it). For a `transfer`, `data.direction` is the finer-grained token-flow view."},"events":{"description":"Every log in the transaction, decoded when possible, so nothing is hidden. Returned only when the request sets `logs=true`, except on `unknown` items where it is always present.","type":"array","items":{"$ref":"#/components/schemas/ActivityEvent"}},"id":{"type":"string","description":"Stable activity ID built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index for this activity within the block.","examples":[3]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","description":"Human-readable label for the activity `type`, suitable for display in a feed. Past-tense, sentence case (e.g. `Token transferred`, `Tokens swapped`, `Burn blocked`).","examples":["Token transferred"]},"transactionHash":{"description":"Transaction hash for this activity.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"data":{"type":"object","properties":{"signer":{"anyOf":[{"type":"string","const":"self"},{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}],"description":"Who signed the activity: `self`, or the access-key address used to sign it."}},"required":["signer"],"description":"A transaction the address sent or paid for that Tempo could not classify into a known activity type. The decoded and raw logs are surfaced in the top-level `events` array."},"type":{"type":"string","const":"unknown","description":"Activity type that tells you which `data` shape this entry uses."}},"required":["perspective","id","logIndex","timestamp","title","transactionHash","data","type"],"title":"Unknown"},"ActivityItem":{"anyOf":[{"$ref":"#/components/schemas/ActivityItemAssetsDeposited"},{"$ref":"#/components/schemas/ActivityItemSharesDeposited"},{"$ref":"#/components/schemas/ActivityItemSharesRedeemed"},{"$ref":"#/components/schemas/ActivityItemAssetsWithdrawn"},{"$ref":"#/components/schemas/ActivityItemSharesRedemptionRequested"},{"$ref":"#/components/schemas/ActivityItemSharesRedemptionFinalized"},{"$ref":"#/components/schemas/ActivityItemSharesRedemptionCancelled"},{"$ref":"#/components/schemas/ActivityItemPrivateAssetsDeposited"},{"$ref":"#/components/schemas/ActivityItemPrivateSharesRedeemed"},{"$ref":"#/components/schemas/ActivityItemTransfer"},{"$ref":"#/components/schemas/ActivityItemMint"},{"$ref":"#/components/schemas/ActivityItemBurn"},{"$ref":"#/components/schemas/ActivityItemSwap"},{"$ref":"#/components/schemas/ActivityItemApproval"},{"$ref":"#/components/schemas/ActivityItemSessionClosed"},{"$ref":"#/components/schemas/ActivityItemAccessKeyCreated"},{"$ref":"#/components/schemas/ActivityItemAccessKeyRevoked"},{"$ref":"#/components/schemas/ActivityItemTokenCreated"},{"$ref":"#/components/schemas/ActivityItemBurnBlocked"},{"$ref":"#/components/schemas/ActivityItemChannelOpened"},{"$ref":"#/components/schemas/ActivityItemChannelFunded"},{"$ref":"#/components/schemas/ActivityItemChannelSettled"},{"$ref":"#/components/schemas/ActivityItemChannelClosed"},{"$ref":"#/components/schemas/ActivityItemChannelCloseCancelled"},{"$ref":"#/components/schemas/ActivityItemOrderPlaced"},{"$ref":"#/components/schemas/ActivityItemOrderCancelled"},{"$ref":"#/components/schemas/ActivityItemFeesDistributed"},{"$ref":"#/components/schemas/ActivityItemFeeRebalanceSwap"},{"$ref":"#/components/schemas/ActivityItemRewardDistributed"},{"$ref":"#/components/schemas/ActivityItemRewardRecipientSet"},{"$ref":"#/components/schemas/ActivityItemSpendingLimitUpdated"},{"$ref":"#/components/schemas/ActivityItemOrderFilled"},{"$ref":"#/components/schemas/ActivityItemOrderFlipped"},{"$ref":"#/components/schemas/ActivityItemPairCreated"},{"$ref":"#/components/schemas/ActivityItemTokenPauseSet"},{"$ref":"#/components/schemas/ActivityItemTokenSupplyCapSet"},{"$ref":"#/components/schemas/ActivityItemTokenTransferPolicySet"},{"$ref":"#/components/schemas/ActivityItemTokenQuoteTokenSet"},{"$ref":"#/components/schemas/ActivityItemTokenNextQuoteTokenSet"},{"$ref":"#/components/schemas/ActivityItemTokenLogoSet"},{"$ref":"#/components/schemas/ActivityItemRoleMembershipSet"},{"$ref":"#/components/schemas/ActivityItemRoleAdminSet"},{"$ref":"#/components/schemas/ActivityItemFeeUserTokenSet"},{"$ref":"#/components/schemas/ActivityItemFeeValidatorTokenSet"},{"$ref":"#/components/schemas/ActivityItemPolicyCreated"},{"$ref":"#/components/schemas/ActivityItemPolicyAdminSet"},{"$ref":"#/components/schemas/ActivityItemWhitelistUpdated"},{"$ref":"#/components/schemas/ActivityItemBlacklistUpdated"},{"$ref":"#/components/schemas/ActivityItemCompoundPolicyCreated"},{"$ref":"#/components/schemas/ActivityItemMasterRegistered"},{"$ref":"#/components/schemas/ActivityItemNonceIncremented"},{"$ref":"#/components/schemas/ActivityItemKeyAuthorizationWitness"},{"$ref":"#/components/schemas/ActivityItemKeyAuthorizationWitnessBurned"},{"$ref":"#/components/schemas/ActivityItemValidatorAdded"},{"$ref":"#/components/schemas/ActivityItemValidatorDeactivated"},{"$ref":"#/components/schemas/ActivityItemValidatorRotated"},{"$ref":"#/components/schemas/ActivityItemValidatorFeeRecipientSet"},{"$ref":"#/components/schemas/ActivityItemValidatorIpSet"},{"$ref":"#/components/schemas/ActivityItemValidatorOwnershipTransferred"},{"$ref":"#/components/schemas/ActivityItemOwnershipTransferred"},{"$ref":"#/components/schemas/ActivityItemValidatorMigrated"},{"$ref":"#/components/schemas/ActivityItemValidatorMigrationSkipped"},{"$ref":"#/components/schemas/ActivityItemNetworkIdentityRotationEpochSet"},{"$ref":"#/components/schemas/ActivityItemInitialized"},{"$ref":"#/components/schemas/ActivityItemUnknown"}],"description":"One classified activity item in the address feed."},"ActivityGroup":{"type":"object","properties":{"chainId":{"description":"Chain ID containing this activity group. Returned when `include=zones`.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ActivityItem"},"description":"Activity items included in this group."},"signer":{"description":"Access-key address that signed every item in the group.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["items","signer"],"description":"Grouped activity entries folded together for readability."},"perspective":{"type":"string","enum":["incoming","outgoing"],"description":"The shared perspective of the items in this group (see an item’s `perspective`)."},"id":{"type":"string","description":"Stable group ID derived from the activity IDs inside the group.","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-3..0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-7:5"]},"timestamp":{"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":"Timestamp of the first item in the group, as an ISO 8601 string.","examples":["2024-01-01T00:00:00Z"]},"title":{"type":"string","const":"Group","description":"Human-readable label for this entry, suitable for display in a feed."},"type":{"type":"string","const":"group"}},"required":["data","perspective","id","timestamp","title","type"],"title":"Group","description":"A group of consecutive activity items signed by the same access key."},"ActivityEntry":{"anyOf":[{"$ref":"#/components/schemas/ActivityItem"},{"$ref":"#/components/schemas/ActivityGroup"}],"description":"Either one activity item, or a grouped set of access-key activity items."},"ValuationPricing":{"description":"Rate provenance for leg valuations. Present when conversion rates were consulted; absent when every value was identity-valued or rates were unavailable.","type":"object","properties":{"asOf":{"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":"Publication date of the rate set as an ISO 8601 timestamp.","examples":["2026-07-20T00:00:00.000Z"]},"basis":{"type":"string","const":"nominal","description":"Valuation basis: one token unit counts as one unit of its display currency.","examples":["nominal"]},"source":{"type":"string","description":"FX rate oracle that supplied the conversion rates.","examples":["ecb"]}},"required":["asOf","basis","source"]},"ActivityMeta":{"description":"Page-level resources, such as valuation rate provenance.","type":"object","properties":{"valuation":{"$ref":"#/components/schemas/ValuationPricing"}}},"AddressActivityList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ActivityEntry"},"description":"Activity feed entries for the address."},"meta":{"$ref":"#/components/schemas/ActivityMeta"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of human-readable activity for the address."},"AddressInvalidOrApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["address_invalid","api_key_malformed","chain_id_invalid","chain_id_unsupported","query_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"AuthenticationError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_invalid","api_key_missing","unauthorized"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ForbiddenError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_forbidden","api_key_ip_forbidden","forbidden"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"UpstreamError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["upstream_error"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"TokenReference":{"description":"A compact token reference, returned when you request `include=token`.","type":"object","properties":{"address":{"description":"The TIP-20 token contract address on Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"currency":{"type":"string","description":"The currency label for this token, such as `USD` for USD-denominated stablecoins.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"id":{"type":"string","description":"A stable resource ID for this token, equal to its contract address.","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"logoUri":{"description":"A URL for the token’s logo image, when one is available.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"},"name":{"type":"string","description":"The token’s human-readable name.","examples":["Bridged USDC (Stargate)"]},"symbol":{"type":"string","description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC.e"]},"verified":{"type":"boolean","description":"Whether this token is in Tempo’s curated verified token list.","examples":[true]}},"required":["address","currency","decimals","id","name","symbol","verified"]},"Balance":{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token.","examples":["1500000"]},"currency":{"type":"string","description":"The currency label for this balance, such as `USD` for a USD-denominated token.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The number of decimal places used to convert this balance between base units and human-readable form.","examples":[6]},"feeEligible":{"description":"Whether this token can be used to pay transaction fees on Tempo: `true` when the token is verified and has a Fee AMM pool, or is the default fee token (`pathUSD`). Lets you identify fee-payable holdings without a separate `/fee-amm/pools` query. Omitted (best-effort) when the fee-token lookup is unavailable.","examples":[true],"type":"boolean"},"formatted":{"type":"string","description":"The same balance in human-readable decimal form, using this balance’s `decimals`.","examples":["1.5"]},"id":{"type":"string","description":"A stable resource ID for this balance, equal to the token contract address.","examples":["0x20c0000000000000000000008f5425160ebe5525"]},"token":{"$ref":"#/components/schemas/TokenReference"},"valuation":{"description":"The holding’s nominal value when `valuation.currency` is requested, or `null` when the token is unverified, its display currency has no rate, or rates were unavailable.","anyOf":[{"$ref":"#/components/schemas/ValuationValue"},{"type":"null"}]}},"required":["amount","currency","decimals","formatted","id","token"],"description":"One TIP-20 token balance held by this account, with both raw and human-readable amounts."},"BalanceListMeta":{"description":"Page-level resources: opt-in counts and valuation rate provenance.","type":"object","properties":{"valuation":{"$ref":"#/components/schemas/ValuationPricing"},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]},"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]}}},"BalanceList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Balance"},"description":"The balances in this page, ordered from largest to smallest amount."},"meta":{"$ref":"#/components/schemas/BalanceListMeta"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of TIP-20 token balances held by this account."},"TokenNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["token_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"AddressValuation":{"type":"object","properties":{"address":{"description":"The account address this valuation covers.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"amount":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The total value of the account’s verified holdings, as a decimal string in `currency`.","examples":["160.50"]},"currency":{"type":"string","description":"The denomination currency of `amount`.","examples":["USD"]},"id":{"type":"string","description":"A stable resource ID for this valuation, equal to the account address.","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"pricing":{"anyOf":[{"$ref":"#/components/schemas/ValuationPricing"},{"type":"null"}],"description":"Rate provenance, or `null` when every valued holding was already denominated in `currency`."},"unpriced":{"type":"array","items":{"type":"string"},"description":"Display currencies excluded from `amount` because the FX oracle has no rate for them.","examples":[["BTC"]]}},"required":["address","amount","currency","id","pricing","unpriced"],"description":"The nominal valuation of an account’s verified token holdings."},"BlockSummary":{"type":"object","properties":{"hash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies this block.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"id":{"description":"Stable resource ID for this API response; it is the block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"number":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The block height, starting from genesis block 0.","examples":[23456789]},"timestamp":{"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":"Block timestamp formatted as ISO 8601.","examples":["2024-01-01T00:00:00Z"]},"transactionCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of transactions included in this block.","examples":[25]}},"required":["hash","id","number","timestamp","transactionCount"],"description":"A lightweight block summary for list responses."},"BlockList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BlockSummary"},"description":"Blocks on this page."},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of blocks ordered by block number."},"ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","chain_id_invalid","chain_id_unsupported","query_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"RpcBlock":{"type":"object","properties":{"baseFeePerGas":{"description":"Base fee per gas for EIP-1559-style fee markets, if present.","anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]},"difficulty":{"description":"Block difficulty value from legacy proof-of-work fields, when present.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"extraData":{"description":"Extra data bytes included by the block producer.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"gasLimit":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Maximum gas available for all transactions in this block.","examples":["0x1a"]},"gasUsed":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Total gas used by every transaction in this block.","examples":["0x1a"]},"hash":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"null"}],"description":"The block hash, or `null` for a pending block."},"logsBloom":{"description":"Bloom filter summarizing logs in the block, or `null` while pending.","anyOf":[{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},{"type":"null"}],"examples":["0x00"]},"miner":{"description":"The address of the block producer, also called the proposer or miner.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"mixHash":{"description":"Consensus mix hash carried in the JSON-RPC block payload.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"nonce":{"description":"Legacy block nonce, or `null` while pending.","anyOf":[{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},{"type":"null"}],"examples":["0x00"]},"number":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}],"description":"The block number, or `null` for a pending block."},"parentHash":{"description":"The hash of the previous block in the chain.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"receiptsRoot":{"description":"Root hash of the receipts trie for this block.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"sha3Uncles":{"description":"Keccak-256 hash of the uncle blocks list.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"size":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Size of the block in bytes.","examples":["0x1a"]},"stateRoot":{"description":"Root hash of the world-state trie after this block.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"timestamp":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Block timestamp as Unix seconds.","examples":["0x1a"]},"totalDifficulty":{"description":"Total cumulative difficulty through this block, when present.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"transactions":{"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"description":"Transaction hashes included in this ordered batch."},"transactionsRoot":{"description":"Root hash of the transactions trie for this block.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"uncles":{"description":"Hashes of uncle blocks included in this block, when present.","type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"withdrawals":{"description":"EIP-4895 withdrawals included in this block, when present.","type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}},"withdrawalsRoot":{"description":"Root hash of the withdrawals trie, when present.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["gasLimit","gasUsed","hash","miner","number","parentHash","receiptsRoot","size","stateRoot","timestamp","transactions","transactionsRoot"],"additionalProperties":{},"description":"The original JSON-RPC block payload."},"BlockMeta":{"type":"object","properties":{"rpc":{"$ref":"#/components/schemas/RpcBlock"}},"required":["rpc"],"description":"The original JSON-RPC payload plus any resources requested with `include`."},"Block":{"type":"object","properties":{"baseFeePerGas":{"anyOf":[{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token (e.g. `1000000` is 1.00 of a 6-decimal stablecoin).","examples":["1000000"]},{"type":"null"}],"description":"Base fee per gas for EIP-1559-style fee markets, or `null` when unsupported."},"gasLimit":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Maximum gas available for all transactions in this block.","examples":[21000]},"gasUsed":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total gas used by transactions in this block.","examples":[21000]},"hash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies this block.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"id":{"description":"Stable resource ID for this API response; it is the block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"meta":{"$ref":"#/components/schemas/BlockMeta"},"miner":{"description":"The address of the block producer, also called the proposer or miner.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"number":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The block height, starting from genesis block 0.","examples":[23456789]},"parentHash":{"description":"The hash of the previous block in the chain.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"size":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Size of the block in bytes.","examples":[1024]},"timestamp":{"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":"Block timestamp formatted as ISO 8601.","examples":["2024-01-01T00:00:00Z"]},"transactionCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of transactions included in this block.","examples":[25]}},"required":["baseFeePerGas","gasLimit","gasUsed","hash","id","meta","miner","number","parentHash","size","timestamp","transactionCount"],"description":"A block formatted for API clients, with number, timestamp, gas usage, producer, and original JSON-RPC data under `meta.rpc`."},"ApiKeyMalformedOrBlockInvalidOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","block_invalid","chain_id_invalid","chain_id_unsupported","query_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"BlockNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["block_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"InvalidRequestError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["address_invalid","api_key_malformed","block_invalid","body_invalid","chain_id_invalid","chain_id_unsupported","destination_transition_invalid","order_invalid","pair_id_invalid","pair_invalid","param_invalid","query_invalid","quote_amount_out_of_range","sender_tag_invalid","swap_continuation_invalid","swap_provider_invalid","symbol_invalid","token_invalid","transaction_invalid","url_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrPositionsInvalidOrQueryInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","chain_id_invalid","chain_id_unsupported","positions_invalid","query_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrPositionInvalidOrQueryInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","chain_id_invalid","chain_id_unsupported","position_invalid","query_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"EarnVaultNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["earn_vault_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrEarningsInvalidOrQueryInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","chain_id_invalid","chain_id_unsupported","earnings_invalid","query_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"CreateExchangeQuoteRequest":{"type":"object","properties":{"account":{"description":"Wallet that will sign and execute the swap.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"amount":{"type":"string","pattern":"^\\d+$","description":"Pinned amount in base units: source amount for `exactSource`, destination amount for `exactDestination`.","examples":["1000000"]},"destinationToken":{"description":"TIP-20 token the swap receives.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"mode":{"type":"string","enum":["exactSource","exactDestination"],"description":"Which side of the swap keeps the requested amount exact.","examples":["exactSource"]},"slippageBps":{"type":"integer","minimum":0,"exclusiveMaximum":10000,"description":"Allowed execution slippage in basis points, where 100 is 1%.","examples":[50]},"sourceToken":{"description":"TIP-20 token the swap spends.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000008f5425160ebe5525"]}},"required":["amount","destinationToken","mode","slippageBps","sourceToken"],"additionalProperties":false,"description":"Request for an executable quote from the configured exchange providers."},"ExchangeQuoteCall":{"type":"object","properties":{"data":{"description":"ABI-encoded call data.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0x095ea7b3"]},"to":{"description":"Contract or precompile that receives the call.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"value":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Native token value sent with the call.","examples":["0x0"]}},"required":["data","to","value"],"description":"One unsigned call in the Tempo transaction plan."},"ExchangeQuoteApproval":{"type":"object","properties":{"calls":{"minItems":1,"type":"array","items":{"$ref":"#/components/schemas/ExchangeQuoteCall"},"description":"Approval calls to confirm before requesting a fresh quote.","examples":[[{"data":"0x095ea7b3000000000000000000000000dec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4240","to":"0x20c0000000000000000000008f5425160ebe5525","value":"0x0"}]]}},"required":["calls"],"description":"Token approval calls required before requesting a fresh quote."},"ExchangeValuedAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]},"valuation":{"description":"The amount’s nominal value in the requested `valuation.currency`. `null` when the token is unverified, its display currency has no rate, or rates were unavailable.","anyOf":[{"$ref":"#/components/schemas/ValuationValue"},{"type":"null"}]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token amount carrying its nominal value in the requested denomination."},"ExchangeQuoteDestinationToken":{"type":"object","properties":{"address":{"description":"TIP-20 token the swap receives.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"currency":{"type":"string","description":"The currency label for this token, such as `USD` for USD-denominated stablecoins.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"logoUri":{"description":"A URL for the token’s logo image, when one is available.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"},"name":{"type":"string","description":"The token’s human-readable name.","examples":["Bridged USDC (Stargate)"]},"symbol":{"type":"string","description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC.e"]},"verified":{"type":"boolean","description":"Whether this token is in Tempo’s curated verified token list.","examples":[true]}},"required":["address","currency","decimals","name","symbol"],"description":"The token received by an exchange quote."},"ExchangeQuoteMeta":{"description":"Valuation rate provenance for this quote.","type":"object","properties":{"valuation":{"$ref":"#/components/schemas/ValuationPricing"}}},"ExchangeQuoteSourceToken":{"type":"object","properties":{"address":{"description":"TIP-20 token the swap spends.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000008f5425160ebe5525"]},"currency":{"type":"string","description":"The currency label for this token, such as `USD` for USD-denominated stablecoins.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"logoUri":{"description":"A URL for the token’s logo image, when one is available.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"},"name":{"type":"string","description":"The token’s human-readable name.","examples":["Bridged USDC (Stargate)"]},"symbol":{"type":"string","description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC.e"]},"verified":{"type":"boolean","description":"Whether this token is in Tempo’s curated verified token list.","examples":[true]}},"required":["address","currency","decimals","name","symbol"],"description":"The token spent by an exchange quote."},"ExchangeQuoteExactSourceApprovalRequired":{"type":"object","properties":{"approval":{"$ref":"#/components/schemas/ExchangeQuoteApproval"},"status":{"type":"string","const":"approvalRequired","description":"Confirm the approvals, then request a fresh quote.","examples":["approvalRequired"]},"destinationAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"destinationAmountMin":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"destinationToken":{"$ref":"#/components/schemas/ExchangeQuoteDestinationToken"},"meta":{"$ref":"#/components/schemas/ExchangeQuoteMeta"},"mode":{"type":"string","const":"exactSource","description":"The source amount is fixed and the destination has a minimum.","examples":["exactSource"]},"sourceAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ExchangeQuoteSourceToken"},"gasEstimate":{"type":"string","pattern":"^\\d+$","description":"Estimated network fee in the chain native token’s base unit.","examples":["150000000000000"]},"provider":{"type":"string","description":"Provider selected for this route.","examples":["nativeDex"]}},"required":["approval","status","destinationAmount","destinationAmountMin","destinationToken","mode","sourceAmount","sourceToken","gasEstimate","provider"],"description":"An exact-source quote that requires token approval."},"ExchangeQuoteTransaction":{"type":"object","properties":{"calls":{"minItems":1,"type":"array","items":{"$ref":"#/components/schemas/ExchangeQuoteCall"},"description":"Calls to execute in order.","examples":[[{"data":"0x095ea7b3000000000000000000000000dec000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f4240","to":"0x20c0000000000000000000008f5425160ebe5525","value":"0x0"},{"data":"0xf8856c0f00000000000000000000000020c0000000000000000000008f5425160ebe552500000000000000000000000020c000000000000000000000b9537d11c60e8b5000000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000f2eb8","to":"0xdec0000000000000000000000000000000000000","value":"0x0"}]]},"chainId":{"description":"Tempo chain where these calls execute.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]}},"required":["calls","chainId"],"description":"Unsigned Tempo transaction plan."},"ExchangeQuoteExactSourceReady":{"type":"object","properties":{"destinationAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"destinationAmountMin":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"destinationToken":{"$ref":"#/components/schemas/ExchangeQuoteDestinationToken"},"meta":{"$ref":"#/components/schemas/ExchangeQuoteMeta"},"mode":{"type":"string","const":"exactSource","description":"The source amount is fixed and the destination has a minimum.","examples":["exactSource"]},"sourceAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ExchangeQuoteSourceToken"},"gasEstimate":{"type":"string","pattern":"^\\d+$","description":"Estimated network fee in the chain native token’s base unit.","examples":["150000000000000"]},"provider":{"type":"string","description":"Provider selected for this route.","examples":["nativeDex"]},"status":{"type":"string","const":"ready","description":"The returned calls can be executed now.","examples":["ready"]},"transaction":{"$ref":"#/components/schemas/ExchangeQuoteTransaction"}},"required":["destinationAmount","destinationAmountMin","destinationToken","mode","sourceAmount","sourceToken","gasEstimate","provider","status","transaction"],"description":"An exact-source quote ready to execute."},"ExchangeQuoteTypedData":{"type":"object","properties":{"domain":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"EIP-712 signing domain.","examples":[{"chainId":4217,"name":"Permit2","verifyingContract":"0x000000000022d473030f116ddee9f6b43ac78ba3"}]},"message":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Values encoded by the primary EIP-712 type.","examples":[{"details":{"amount":"1000000","expiration":"4102444800","nonce":"0","token":"0x20c0000000000000000000008f5425160ebe5525"},"sigDeadline":"4102444800","spender":"0x1febb76be10aaf3a1402f04e8e835f2c382f7914"}]},"primaryType":{"type":"string","minLength":1,"description":"Root EIP-712 type.","examples":["PermitSingle"]},"types":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"}},"required":["name","type"],"additionalProperties":false}},"description":"EIP-712 type definitions keyed by type name.","examples":[{"PermitDetails":[{"name":"token","type":"address"},{"name":"amount","type":"uint160"},{"name":"expiration","type":"uint48"},{"name":"nonce","type":"uint48"}],"PermitSingle":[{"name":"details","type":"PermitDetails"},{"name":"spender","type":"address"},{"name":"sigDeadline","type":"uint256"}]}]}},"required":["domain","message","primaryType","types"],"description":"EIP-712 payload the wallet must sign before execution can continue."},"ExchangeQuoteExactSourceSignatureRequired":{"type":"object","properties":{"destinationAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"destinationAmountMin":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"destinationToken":{"$ref":"#/components/schemas/ExchangeQuoteDestinationToken"},"meta":{"$ref":"#/components/schemas/ExchangeQuoteMeta"},"mode":{"type":"string","const":"exactSource","description":"The source amount is fixed and the destination has a minimum.","examples":["exactSource"]},"sourceAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ExchangeQuoteSourceToken"},"gasEstimate":{"type":"string","pattern":"^\\d+$","description":"Estimated network fee in the chain native token’s base unit.","examples":["150000000000000"]},"provider":{"type":"string","description":"Provider selected for this route.","examples":["nativeDex"]},"continuation":{"type":"string","minLength":1,"description":"Opaque state supplied to the finalization endpoint within 30 seconds.","examples":["eyJwcm92aWRlciI6InVuaXN3YXAifQ"]},"status":{"type":"string","const":"signatureRequired","description":"Sign the typed data before final calldata can be built.","examples":["signatureRequired"]},"typedData":{"$ref":"#/components/schemas/ExchangeQuoteTypedData"}},"required":["destinationAmount","destinationAmountMin","destinationToken","mode","sourceAmount","sourceToken","gasEstimate","provider","continuation","status","typedData"],"description":"An exact-source quote that requires a signature."},"ExchangeQuoteExactDestinationApprovalRequired":{"type":"object","properties":{"approval":{"$ref":"#/components/schemas/ExchangeQuoteApproval"},"status":{"type":"string","const":"approvalRequired","description":"Confirm the approvals, then request a fresh quote.","examples":["approvalRequired"]},"destinationAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"destinationToken":{"$ref":"#/components/schemas/ExchangeQuoteDestinationToken"},"meta":{"$ref":"#/components/schemas/ExchangeQuoteMeta"},"mode":{"type":"string","const":"exactDestination","description":"The destination amount is fixed and the source has a maximum.","examples":["exactDestination"]},"sourceAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"sourceAmountMax":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ExchangeQuoteSourceToken"},"gasEstimate":{"type":"string","pattern":"^\\d+$","description":"Estimated network fee in the chain native token’s base unit.","examples":["150000000000000"]},"provider":{"type":"string","description":"Provider selected for this route.","examples":["nativeDex"]}},"required":["approval","status","destinationAmount","destinationToken","mode","sourceAmount","sourceAmountMax","sourceToken","gasEstimate","provider"],"description":"An exact-destination quote that requires token approval."},"ExchangeQuoteExactDestinationReady":{"type":"object","properties":{"destinationAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"destinationToken":{"$ref":"#/components/schemas/ExchangeQuoteDestinationToken"},"meta":{"$ref":"#/components/schemas/ExchangeQuoteMeta"},"mode":{"type":"string","const":"exactDestination","description":"The destination amount is fixed and the source has a maximum.","examples":["exactDestination"]},"sourceAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"sourceAmountMax":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ExchangeQuoteSourceToken"},"gasEstimate":{"type":"string","pattern":"^\\d+$","description":"Estimated network fee in the chain native token’s base unit.","examples":["150000000000000"]},"provider":{"type":"string","description":"Provider selected for this route.","examples":["nativeDex"]},"status":{"type":"string","const":"ready","description":"The returned calls can be executed now.","examples":["ready"]},"transaction":{"$ref":"#/components/schemas/ExchangeQuoteTransaction"}},"required":["destinationAmount","destinationToken","mode","sourceAmount","sourceAmountMax","sourceToken","gasEstimate","provider","status","transaction"],"description":"An exact-destination quote ready to execute."},"ExchangeQuoteExactDestinationSignatureRequired":{"type":"object","properties":{"destinationAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"destinationToken":{"$ref":"#/components/schemas/ExchangeQuoteDestinationToken"},"meta":{"$ref":"#/components/schemas/ExchangeQuoteMeta"},"mode":{"type":"string","const":"exactDestination","description":"The destination amount is fixed and the source has a maximum.","examples":["exactDestination"]},"sourceAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"sourceAmountMax":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ExchangeQuoteSourceToken"},"gasEstimate":{"type":"string","pattern":"^\\d+$","description":"Estimated network fee in the chain native token’s base unit.","examples":["150000000000000"]},"provider":{"type":"string","description":"Provider selected for this route.","examples":["nativeDex"]},"continuation":{"type":"string","minLength":1,"description":"Opaque state supplied to the finalization endpoint within 30 seconds.","examples":["eyJwcm92aWRlciI6InVuaXN3YXAifQ"]},"status":{"type":"string","const":"signatureRequired","description":"Sign the typed data before final calldata can be built.","examples":["signatureRequired"]},"typedData":{"$ref":"#/components/schemas/ExchangeQuoteTypedData"}},"required":["destinationAmount","destinationToken","mode","sourceAmount","sourceAmountMax","sourceToken","gasEstimate","provider","continuation","status","typedData"],"description":"An exact-destination quote that requires a signature."},"ExchangeQuote":{"anyOf":[{"$ref":"#/components/schemas/ExchangeQuoteExactSourceApprovalRequired"},{"$ref":"#/components/schemas/ExchangeQuoteExactSourceReady"},{"$ref":"#/components/schemas/ExchangeQuoteExactSourceSignatureRequired"},{"$ref":"#/components/schemas/ExchangeQuoteExactDestinationApprovalRequired"},{"$ref":"#/components/schemas/ExchangeQuoteExactDestinationReady"},{"$ref":"#/components/schemas/ExchangeQuoteExactDestinationSignatureRequired"}],"description":"Provider-neutral exchange quote with its next execution action."},"ApiKeyMalformedOrBodyInvalidOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrQuoteAmountOutOfRangeError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","body_invalid","chain_id_invalid","chain_id_unsupported","query_invalid","quote_amount_out_of_range"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"QuoteNotAvailableError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["quote_not_available"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"FinalizeExchangeQuoteRequest":{"type":"object","properties":{"account":{"description":"Wallet that signed and will execute the swap.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"continuation":{"type":"string","minLength":1,"maxLength":100000,"description":"Opaque state returned by the quote request.","examples":["eyJwcm92aWRlciI6InVuaXN3YXAifQ"]},"provider":{"type":"string","minLength":1,"description":"Provider that issued the continuation.","examples":["uniswap"]},"signature":{"description":"65-byte EIP-712 signature requested by the quote.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0x1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"]}},"required":["account","continuation","provider","signature"],"additionalProperties":false,"description":"Request to finalize a provider quote after signing its typed data."},"FinalizedExchangeQuote":{"type":"object","properties":{"provider":{"type":"string","description":"Provider that built the transaction.","examples":["uniswap"]},"transaction":{"$ref":"#/components/schemas/ExchangeQuoteTransaction"}},"required":["provider","transaction"],"description":"Final unsigned transaction plan for a signed provider quote."},"ApiKeyMalformedOrBodyInvalidOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrSwapContinuationInvalidOrSwapProviderInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","body_invalid","chain_id_invalid","chain_id_unsupported","query_invalid","swap_continuation_invalid","swap_provider_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ExchangeSwapToken":{"type":"object","properties":{"address":{"description":"The TIP-20 token contract address on Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"currency":{"type":"string","description":"The currency label for this token, such as `USD` for USD-denominated stablecoins.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"logoUri":{"description":"A URL for the token’s logo image, when one is available.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"},"name":{"type":"string","description":"The token’s human-readable name.","examples":["Bridged USDC (Stargate)"]},"symbol":{"type":"string","description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC.e"]},"verified":{"type":"boolean","description":"Whether this token is in Tempo’s curated verified token list.","examples":[true]}},"required":["address","currency","decimals","name","symbol"],"description":"A token referenced by one side of a swap."},"ExchangeSwapFill":{"type":"object","properties":{"destinationAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"destinationToken":{"$ref":"#/components/schemas/ExchangeSwapToken"},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index of this fill within its block.","examples":[0]},"maker":{"description":"Maker address whose resting order was filled.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"orderId":{"type":"string","pattern":"^\\d+$","description":"On-chain maker order id, returned as a decimal string.","examples":["1000000"]},"partialFill":{"type":"boolean","description":"Whether this fill used only part of the maker order.","examples":[false]},"price":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Quote-per-base price at fill time, returned as a fixed-decimal string with 5 decimal places. This value is direction-independent and works well for charts.","examples":["1.00000"]},"sourceAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ExchangeSwapToken"}},"required":["destinationAmount","destinationToken","logIndex","maker","orderId","partialFill","price","sourceAmount","sourceToken"],"description":"One maker-order fill within a swap, described from the taker’s perspective."},"ExchangeSwap":{"type":"object","properties":{"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block number where the swap was included.","examples":[23456789]},"destinationAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"destinationToken":{"$ref":"#/components/schemas/ExchangeSwapToken"},"filledAt":{"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":"Block timestamp when the swap was filled onchain.","examples":["2024-01-01T00:00:00Z"]},"fills":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeSwapFill"},"description":"Maker-order fills that make up this swap, ordered by execution `logIndex`. Exact-destination swaps can execute hops in reverse, so use `route` for the source-to-destination path."},"id":{"type":"string","description":"Stable API id built from the lowercase transaction hash and the first fill log index.","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-0"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block-wide log index for the swap, taken from its first fill.","examples":[0]},"mode":{"anyOf":[{"type":"string","enum":["exactSource","exactDestination"]},{"type":"null"}],"description":"The amount type fixed by the swap call: `exactSource` for `swapExactAmountIn` or `exactDestination` for `swapExactAmountOut`. This is recovered from transaction calldata and is `null` when the swap did not come from a decodable swap call.","examples":["exactSource"]},"rate":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Swap-level effective rate, calculated as destination amount divided by source amount from the taker’s perspective and returned with 5 decimal places. Compare it with `1` to see distance from peg.","examples":["1.00000"]},"route":{"type":"array","items":{"description":"A TIP-20 token contract address — the `0x`-prefixed 20-byte identifier for the token, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"description":"Token path for the swap, from source through any intermediate tokens to destination. `route.length - 1` is the hop count; two entries means a direct swap."},"sourceAmount":{"$ref":"#/components/schemas/ExchangeValuedAmount"},"sourceToken":{"$ref":"#/components/schemas/ExchangeSwapToken"},"taker":{"description":"Taker address that initiated the swap.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"transactionHash":{"description":"Transaction hash for the transaction containing the swap.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["blockNumber","destinationAmount","destinationToken","filledAt","fills","id","logIndex","mode","rate","route","sourceAmount","sourceToken","taker","transactionHash"],"description":"One logical taker swap on Tempo’s built-in stablecoin exchange."},"ExchangeSwapListMeta":{"description":"Page-level resources, such as valuation rate provenance.","type":"object","properties":{"valuation":{"$ref":"#/components/schemas/ValuationPricing"}}},"ExchangeSwapList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeSwap"},"description":"Swaps returned on this page."},"meta":{"$ref":"#/components/schemas/ExchangeSwapListMeta"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A paginated list of swaps on Tempo’s built-in stablecoin exchange."},"ExchangePairToken":{"type":"object","properties":{"address":{"description":"TIP-20 token contract address — the `0x`-prefixed 20-byte identifier for this token.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"currency":{"description":"Human-readable currency code for the token, when known.","examples":["USD"],"type":"string"},"decimals":{"description":"Number of decimal places the token uses; stablecoins on Tempo typically use 6.","examples":[6],"type":"integer","minimum":0,"maximum":9007199254740991},"logoUri":{"description":"URL for the token logo image, when one is available.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"},"name":{"description":"Human-readable token name, such as `USD Coin`.","examples":["Bridged USDC (Stargate)"],"type":"string"},"symbol":{"description":"Short token ticker symbol, such as `USDC`.","examples":["USDC.e"],"type":"string"},"verified":{"description":"Whether Tempo has verified this token metadata.","examples":[true],"type":"boolean"}},"required":["address"],"description":"One side of a trading pair (with metadata when requested via `include=tokens`)."},"ExchangePair":{"type":"object","properties":{"base":{"$ref":"#/components/schemas/ExchangePairToken"},"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block number where the pair was created.","examples":[23456789]},"id":{"description":"Stable API id for this pair; it is the same value as the onchain pair key.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"key":{"description":"Stable onchain pair identifier returned by the DEX precompile as `pairKey`.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"liquidity":{"description":"Liquidity signal for the pair, present only when you request `sort=liquidity`.","examples":["1000000"],"type":"string","pattern":"^\\d+$"},"quote":{"$ref":"#/components/schemas/ExchangePairToken"},"timestamp":{"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":"Block timestamp when the pair was created.","examples":["2024-01-01T00:00:00Z"]},"transactionHash":{"description":"Transaction hash for the transaction that created the pair.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["base","blockNumber","id","key","quote","timestamp","transactionHash"],"description":"One trading pair on Tempo’s built-in stablecoin exchange."},"ExchangePairListMeta":{"description":"Response-level resources requested with `include`, such as `totalCount`.","type":"object","properties":{"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]}},"required":["totalCountCapped","totalCount"]},"ExchangePairList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ExchangePair"},"description":"Trading pairs returned on this page."},"meta":{"$ref":"#/components/schemas/ExchangePairListMeta"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A paginated list of trading pairs on Tempo’s built-in stablecoin exchange."},"ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrPairInvalidOrQueryInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","chain_id_invalid","chain_id_unsupported","pair_invalid","query_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"PairNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["pair_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ExchangeOrderPair":{"type":"object","properties":{"base":{"$ref":"#/components/schemas/ExchangePairToken"},"key":{"description":"On-chain key for this `(base, quote)` trading pair.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"quote":{"$ref":"#/components/schemas/ExchangePairToken"}},"required":["base","key","quote"],"description":"The trading pair the order belongs to."},"ExchangeRestingOrder":{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Original placed amount, returned as a decimal integer string in base-token smallest units.","examples":["1000000"]},"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block number where the order was placed.","examples":[23456789]},"id":{"type":"string","pattern":"^\\d+$","description":"Stable API id for this order; it is the same value as the onchain order id.","examples":["1000000"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index of the order placement within its block.","examples":[0]},"maker":{"description":"Maker address that owns the order.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"orderId":{"type":"string","pattern":"^\\d+$","description":"On-chain order id, returned as a decimal string.","examples":["1000000"]},"placedAt":{"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":"Block timestamp when the order was placed.","examples":["2024-01-01T00:00:00Z"]},"price":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Quote-per-base limit price implied by `tick`, returned with 5 decimal places. This value is direction-independent; use `rate` for the taker-perspective ratio.","examples":["1.00000"]},"rate":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Order limit price as a destination/source ratio from the taker’s perspective, returned with 5 decimal places. Use `price` for orderbook displays.","examples":["1.00000"]},"remaining":{"type":"string","pattern":"^\\d+$","description":"Unfilled remainder of `amount`, returned as a decimal integer string in base-token smallest units. This is always positive for rows in this response.","examples":["1000000"]},"side":{"type":"string","enum":["bid","ask"],"description":"Orderbook side: `bid` pays quote for base, and `ask` sells base for quote.","examples":["bid"]},"tick":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Order tick as a signed offset from peg; one tick equals `1/priceScale`.","examples":[0]},"transactionHash":{"description":"Transaction hash for the transaction that placed the order.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"pair":{"$ref":"#/components/schemas/ExchangeOrderPair"}},"required":["amount","blockNumber","id","logIndex","maker","orderId","placedAt","price","rate","remaining","side","tick","transactionHash","pair"],"description":"A resting maker order plus its trading pair."},"ExchangeOrderListMeta":{"description":"Response-level resources requested with `include`, such as `totalCount`.","type":"object","properties":{"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]}},"required":["totalCountCapped","totalCount"]},"ExchangeOrderList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeRestingOrder"},"description":"Resting orders returned on this page."},"meta":{"$ref":"#/components/schemas/ExchangeOrderListMeta"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]},"truncated":{"type":"boolean","description":"`true` when the `OrderPlaced` scan hit its hard cap, meaning the resting set was computed from only the most recent placements.","examples":[false]}},"required":["data","nextCursor","truncated"],"description":"A paginated list of resting maker orders on Tempo’s built-in stablecoin exchange."},"ExchangeOrder":{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Initial order size, returned as a decimal integer string in base-token smallest units.","examples":["1000000"]},"flipTick":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Replacement `tick` used if this order auto-flips into a counter-order after filling.","examples":[10]},"id":{"type":"string","pattern":"^\\d+$","description":"Stable API id for this order; it is the same value as the onchain order id.","examples":["1000000"]},"isBid":{"type":"boolean","description":"Order side as a boolean: `true` means the maker buys base, and `false` means the maker sells base.","examples":[true]},"isFlipOrder":{"type":"boolean","description":"Whether this order automatically becomes a counter-order after it fills.","examples":[false]},"maker":{"description":"Maker address that owns the order.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"mode":{"type":"string","enum":["exactSource","exactDestination"],"description":"Taker-perspective mode for the order. `exactSource` applies to maker bids where the taker sells base; `exactDestination` applies to maker asks where the taker buys base.","examples":["exactSource"]},"orderId":{"type":"string","pattern":"^\\d+$","description":"On-chain order id, returned as a decimal string.","examples":["1000000"]},"pair":{"$ref":"#/components/schemas/ExchangeOrderPair"},"price":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Quote-per-base price implied by `tick`, returned as a fixed-decimal string with 5 decimal places.","examples":["1.00000"]},"rate":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Destination-to-source price ratio, returned as a fixed-decimal string with 5 decimal places.","examples":["1.00000"]},"remaining":{"type":"string","pattern":"^\\d+$","description":"Unfilled base-side amount still resting on the orderbook, returned as a decimal integer string.","examples":["1000000"]},"tick":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"On-chain signed tick, scaled by `1/priceScale`; use `price` for the decoded ratio.","examples":[0]}},"required":["amount","flipTick","id","isBid","isFlipOrder","maker","mode","orderId","pair","price","rate","remaining","tick"],"description":"A single DEX order with live onchain state."},"ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrOrderInvalidOrQueryInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","chain_id_invalid","chain_id_unsupported","order_invalid","query_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"OrderNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["order_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ExchangeOrderFill":{"type":"object","properties":{"amountFilled":{"type":"string","pattern":"^\\d+$","description":"Base-side amount filled by this event, returned as a decimal integer string in base-token smallest units.","examples":["1000000"]},"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block number where the fill was included.","examples":[23456789]},"filledAt":{"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":"Block timestamp when the fill landed onchain.","examples":["2024-01-01T00:00:00Z"]},"id":{"type":"string","description":"Stable API id built from the lowercase transaction hash and log index.","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-0"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index of this fill within its block.","examples":[0]},"orderId":{"type":"string","pattern":"^\\d+$","description":"On-chain order id, returned as a decimal string.","examples":["1000000"]},"partialFill":{"type":"boolean","description":"Whether this fill used only part of the maker order.","examples":[false]},"taker":{"description":"Taker address that submitted the incoming order.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"transactionHash":{"description":"Transaction hash for the transaction containing the fill.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["amountFilled","blockNumber","filledAt","id","logIndex","orderId","partialFill","taker","transactionHash"],"description":"One `OrderFilled` event against this order."},"ExchangeOrderFillListMeta":{"description":"Response-level resources requested with `include`.","type":"object","properties":{"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]}},"required":["totalCountCapped","totalCount"]},"ExchangeOrderFillList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeOrderFill"},"description":"Fills returned on this page."},"meta":{"$ref":"#/components/schemas/ExchangeOrderFillListMeta"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A paginated list of fill events for one DEX order."},"ExchangeOhlcBucket":{"type":"object","properties":{"close":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Close price for the bucket: the latest fill rate, returned with 5 decimal places.","examples":["1.00000"]},"fillCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of fills included in this bucket.","examples":[5]},"high":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"High price for the bucket: the highest fill rate, returned with 5 decimal places.","examples":["1.01000"]},"id":{"type":"string","description":"Stable API id built from the pair key, candle interval, and bucket start time in Unix seconds.","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-1h-1704067200"]},"low":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Low price for the bucket: the lowest fill rate, returned with 5 decimal places.","examples":["0.99000"]},"open":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Open price for the bucket: the earliest fill rate, returned with 5 decimal places.","examples":["1.00000"]},"timestamp":{"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":"ISO 8601 timestamp for the start of this candle bucket.","examples":["2024-01-01T00:00:00Z"]},"volume":{"type":"object","properties":{"base":{"type":"string","pattern":"^\\d+$","description":"Total base-side amount filled in this bucket, in the token’s smallest units.","examples":["1000000"]},"quote":{"type":"string","pattern":"^\\d+$","description":"Total quote-side amount filled in this bucket, reconstructed from each fill’s tick and returned in the token’s smallest units.","examples":["1000000"]}},"required":["base","quote"],"description":"Total filled volume in this bucket, split by pair side."}},"required":["close","fillCount","high","id","low","open","timestamp","volume"],"description":"One OHLC candle bucket for charting a trading pair."},"ExchangePairOhlc":{"type":"object","properties":{"base":{"$ref":"#/components/schemas/ExchangePairToken"},"data":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeOhlcBucket"},"description":"OHLC candle buckets ordered oldest to newest; empty buckets are omitted."},"interval":{"type":"string","enum":["1m","5m","15m","1h","4h","1d"],"description":"Time size for each OHLC candle bucket.","examples":["1h"]},"quote":{"$ref":"#/components/schemas/ExchangePairToken"},"truncated":{"type":"boolean","description":"`true` when the fill scan hit its hard cap, meaning OHLC values were computed from only the most recent fills.","examples":[false]},"window":{"type":"string","enum":["1h","24h","7d","30d"],"description":"Rolling time window covered by the OHLC candles.","examples":["24h"]}},"required":["base","data","interval","quote","truncated","window"],"description":"OHLC candle data for one trading pair over a rolling time window."},"ExchangeDepthLevel":{"type":"object","properties":{"cumulativeSize":{"type":"string","pattern":"^\\d+$","description":"Running sum of `size` from the best populated tick outward to this level, in base-token smallest units.","examples":["1000000"]},"id":{"type":"string","description":"Stable API id built from the pair key, orderbook side, and tick.","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-bid-0"]},"price":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Tick converted to a price ratio with 5 decimal places.","examples":["1.00000"]},"size":{"type":"string","pattern":"^\\d+$","description":"Resting liquidity at this tick level, in base-token smallest units.","examples":["1000000"]},"tick":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Signed price tick (`int16`), always a multiple of the DEX tick spacing.","examples":[0]}},"required":["cumulativeSize","id","price","size","tick"],"description":"One price level in the orderbook depth response."},"ExchangePairDepth":{"type":"object","properties":{"asks":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeDepthLevel"},"description":"Ask-side levels, where makers sell base and takers buy it, ordered from best lowest ask outward."},"base":{"$ref":"#/components/schemas/ExchangePairToken"},"bids":{"type":"array","items":{"$ref":"#/components/schemas/ExchangeDepthLevel"},"description":"Bid-side levels, where makers buy base and takers sell it, ordered from best highest bid outward."},"quote":{"$ref":"#/components/schemas/ExchangePairToken"}},"required":["asks","base","bids","quote"],"description":"Orderbook depth for one trading pair, with cumulative size at each tick."},"FeeAmmPoolToken":{"type":"object","properties":{"address":{"description":"The TIP-20 token contract address on Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"currency":{"type":"string","description":"The currency label for this token, such as `USD` for USD-denominated stablecoins.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"logoUri":{"description":"A URL for the token’s logo image, when one is available.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"},"name":{"type":"string","description":"The token’s human-readable name.","examples":["Bridged USDC (Stargate)"]},"symbol":{"type":"string","description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC.e"]},"verified":{"type":"boolean","description":"Whether this token is in Tempo’s curated verified token list.","examples":[true]}},"required":["address","currency","decimals","name","symbol"],"description":"A token referenced by one side of a Fee AMM pool."},"FeeAmmPool":{"type":"object","properties":{"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":"Timestamp when liquidity was first minted into this pool.","examples":["2024-01-01T00:00:00Z"]},"id":{"description":"Stable resource id for the pool; this is the same value as `poolId`.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"lastMintAt":{"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":"Timestamp when liquidity was most recently minted into this pool.","examples":["2024-01-01T00:00:00Z"]},"mintCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of liquidity mints into this pool.","examples":[25]},"poolId":{"description":"Pool id computed as `keccak256(abi.encode(userToken, validatorToken))`, matching `FeeManager.getPoolId`.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"userAmount":{"description":"Current user-token reserve. Omitted when the onchain read fails.","type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"]},"userToken":{"$ref":"#/components/schemas/FeeAmmPoolToken"},"validatorAmount":{"description":"Current validator-token reserve. Omitted when the onchain read fails.","type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"]},"validatorToken":{"$ref":"#/components/schemas/FeeAmmPoolToken"}},"required":["createdAt","id","lastMintAt","mintCount","poolId","userToken","validatorToken"],"description":"A Fee AMM pool discovered from its onchain `Mint` events."},"FeeAmmPoolList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FeeAmmPool"},"description":"Fee AMM pools ordered by mint count, most active first."},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of Fee AMM pools ordered by mint count, most active first."},"FeeAmmMintToken":{"type":"object","properties":{"address":{"description":"TIP-20 token contract address used by this fee pool.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"currency":{"description":"Display currency for the token, when available.","examples":["USD"],"type":"string"},"decimals":{"description":"Number of decimal places the token uses.","examples":[6],"type":"integer","minimum":0,"maximum":9007199254740991},"logoUri":{"description":"URL for the token logo image, when available.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"},"name":{"description":"Human-readable token name.","examples":["Bridged USDC (Stargate)"],"type":"string"},"symbol":{"description":"Short token ticker symbol.","examples":["USDC.e"],"type":"string"},"verified":{"description":"Whether Tempo has verified this token’s metadata.","examples":[true],"type":"boolean"}},"required":["address"],"description":"A TIP-20 token used by a Fee AMM pool, with metadata when available."},"FeeAmmMint":{"type":"object","properties":{"amountUserToken":{"description":"Amount of the user-side token deposited, in base units. Only present on legacy-signature mints.","type":"string","pattern":"^\\d+$","examples":["1000000"]},"amountValidatorToken":{"type":"string","pattern":"^\\d+$","description":"Amount of the validator-side token deposited, in base units.","examples":["1000000"]},"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block number where the mint occurred.","examples":[23456789]},"id":{"type":"string","description":"Stable mint id built from the transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-0"]},"liquidity":{"type":"string","pattern":"^\\d+$","description":"Amount of pool liquidity minted, as an integer string.","examples":["1000000"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Log index of this mint within the block.","examples":[0]},"minter":{"description":"Address that deposited tokens into the pool.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"recipient":{"description":"Address that received the minted liquidity. Only present on current-signature mints.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"timestamp":{"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":"Block timestamp when the mint occurred.","examples":["2024-01-01T00:00:00Z"]},"transactionHash":{"description":"Hash of the transaction that emitted this mint.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"userToken":{"$ref":"#/components/schemas/FeeAmmMintToken"},"validatorToken":{"$ref":"#/components/schemas/FeeAmmMintToken"}},"required":["amountValidatorToken","blockNumber","id","liquidity","logIndex","minter","timestamp","transactionHash","userToken","validatorToken"],"description":"One liquidity mint into a Fee AMM pool."},"FeeAmmMintListMeta":{"description":"Response-wide metadata requested with `include`, such as `totalCount`.","type":"object","properties":{"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]}},"required":["totalCountCapped","totalCount"]},"FeeAmmMintList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FeeAmmMint"},"description":"Liquidity mints returned on this page."},"meta":{"$ref":"#/components/schemas/FeeAmmMintListMeta"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of Fee AMM liquidity mints."},"TransactionReceiptFeeAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]},"valuation":{"description":"The fee’s nominal value in the requested `valuation.currency`. `null` when rates were unavailable.","anyOf":[{"$ref":"#/components/schemas/ValuationValue"},{"type":"null"}]}},"required":["baseUnits","currency","decimals","formatted"],"description":"Fee charged to the fee payer, denominated in USD."},"RpcTokenReference":{"description":"The token requested for transaction fees, with RPC metadata and optional curated fields.","type":"object","properties":{"address":{"description":"The TIP-20 token contract address on Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"currency":{"type":"string","description":"The currency label for this token, such as `USD` for USD-denominated stablecoins.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"logoUri":{"description":"A URL for the token’s logo image, when one is available.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"},"name":{"type":"string","description":"The token’s human-readable name.","examples":["Bridged USDC (Stargate)"]},"symbol":{"type":"string","description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC.e"]},"verified":{"type":"boolean","description":"Whether this token is in Tempo’s curated verified token list.","examples":[true]}},"required":["address","currency","decimals","name","symbol"]},"RpcTransactionLog":{"type":"object","properties":{"address":{"description":"The contract address that emitted this event log.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"blockHash":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"null"}],"description":"The block hash once included, or `null` while pending."},"blockNumber":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}],"description":"The block number once included, or `null` while pending."},"blockTimestamp":{"description":"Tempo-provided block timestamp for this log.","anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]},"data":{"description":"ABI-encoded data for the event parameters that are not indexed.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"logIndex":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}],"description":"The log position within the block, or `null` while pending."},"removed":{"type":"boolean","description":"Whether this log was removed by a chain reorganization; Tempo finality means finalized logs do not reorg.","examples":[false]},"topics":{"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"description":"Indexed event topics, including the event signature hash as the first topic."},"transactionHash":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"null"}],"description":"The transaction hash for this log, or `null` while pending."},"transactionIndex":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}],"description":"The transaction position within the block, or `null` while pending."}},"required":["address","blockHash","blockNumber","data","logIndex","removed","topics","transactionHash","transactionIndex"],"additionalProperties":{},"description":"One event log emitted by a contract during transaction execution."},"RpcTransactionReceipt":{"type":"object","properties":{"blobGasPrice":{"description":"Blob gas price for EIP-4844 blob data.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"blobGasUsed":{"description":"Blob gas used by EIP-4844 blob data.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"blockHash":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"null"}],"description":"The block hash, or `null` for receipts reconstructed from the index."},"blockNumber":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"The block number that included this receipt.","examples":["0x1a"]},"blockTimestamp":{"description":"Block timestamp added when this receipt is reconstructed from indexed data.","anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]},"contractAddress":{"description":"The created contract address, or `null` if the transaction did not create a contract.","anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}]},"cumulativeGasUsed":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Total gas used in the block up to and including this transaction.","examples":["0x1a"]},"effectiveGasPrice":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Effective gas price paid for this transaction.","examples":["0x1a"]},"feePayer":{"description":"The address that paid the transaction fee.","anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}]},"feeToken":{"description":"The token used to pay the fee; on Tempo this is a USD stablecoin such as `pathUSD`.","anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}]},"from":{"description":"The address that sent or authorized the transaction.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"gasUsed":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Gas actually used to execute the transaction.","examples":["0x1a"]},"logs":{"type":"array","items":{"$ref":"#/components/schemas/RpcTransactionLog"},"description":"Event logs emitted by contracts while this transaction executed."},"logsBloom":{"description":"Bloom filter summarizing the logs in this receipt.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"root":{"description":"Post-transaction state root used by pre-Byzantium Ethereum receipts.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"status":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Execution status as a hex quantity: `0x1` means success and `0x0` means reverted.","examples":["0x1"]},"to":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}],"description":"The recipient address, or `null` when the transaction created a contract."},"transactionHash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies the transaction.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"transactionIndex":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"The transaction position within its block.","examples":["0x1a"]},"type":{"description":"Raw transaction type byte, such as `0x2` for EIP-1559 or `0x76` for Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0x2"]}},"required":["blockHash","blockNumber","cumulativeGasUsed","effectiveGasPrice","from","gasUsed","logs","status","to","transactionHash","transactionIndex","type"],"additionalProperties":{},"description":"The original JSON-RPC receipt payload."},"TransactionReceiptMeta":{"type":"object","properties":{"valuation":{"$ref":"#/components/schemas/ValuationPricing"},"rpc":{"$ref":"#/components/schemas/RpcTransactionReceipt"}},"required":["rpc"],"description":"Receipt metadata containing valuation rate provenance and the JSON-RPC payload."},"TransactionType":{"type":"string","enum":["legacy","eip2930","eip1559","eip4844","eip7702","tempo","unknown"],"description":"Human-readable transaction type decoded from the raw JSON-RPC `type` byte.","examples":["eip1559"]},"TransactionReceipt":{"description":"The transaction outcome included only when you request `include=receipt`.","type":"object","properties":{"blockHash":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"null"}],"description":"The block hash, or `null` when the receipt was reconstructed from indexed data."},"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The block number that included this receipt.","examples":[23456789]},"contractAddress":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}],"description":"The created contract address, or `null` if the transaction did not create a contract."},"cumulativeGasUsed":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total gas used in the block up to and including this transaction.","examples":[21000]},"effectiveGasPrice":{"type":"string","pattern":"^\\d+$","description":"Effective gas price paid for this transaction, in attodollars per gas.","examples":["1000000"]},"feeAmount":{"$ref":"#/components/schemas/TransactionReceiptFeeAmount"},"feePayer":{"description":"The address that paid the transaction fee.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"feeToken":{"$ref":"#/components/schemas/RpcTokenReference"},"gasUsed":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Gas actually used to execute the transaction.","examples":[21000]},"id":{"description":"Stable resource ID for this API response; it is the transaction hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"logs":{"type":"array","items":{"$ref":"#/components/schemas/RpcTransactionLog"},"description":"Event logs emitted by this transaction, returned in JSON-RPC log format."},"meta":{"$ref":"#/components/schemas/TransactionReceiptMeta"},"recipient":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}],"description":"The recipient address, or `null` when the transaction created a contract."},"sender":{"description":"The address that sent or authorized the transaction.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"status":{"type":"string","enum":["success","reverted"],"description":"Whether the transaction succeeded or reverted.","examples":["success"]},"timestamp":{"anyOf":[{"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))$"},{"type":"null"}],"description":"The block timestamp as ISO 8601, or `null` when it is unavailable.","examples":["2024-01-01T00:00:00Z"]},"transactionHash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies the transaction.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"transactionIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The transaction position within its block.","examples":[0]},"type":{"$ref":"#/components/schemas/TransactionType"}},"required":["blockHash","blockNumber","contractAddress","cumulativeGasUsed","effectiveGasPrice","feeAmount","gasUsed","id","logs","meta","recipient","sender","status","timestamp","transactionHash","transactionIndex","type"]},"TransactionReceiptListMeta":{"description":"Page-level resources: opt-in counts and valuation rate provenance.","type":"object","properties":{"valuation":{"$ref":"#/components/schemas/ValuationPricing"},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]},"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]}}},"TransactionReceiptList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TransactionReceipt"},"description":"Receipts on this page."},"meta":{"$ref":"#/components/schemas/TransactionReceiptListMeta"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of receipts ordered by block number and transaction position."},"ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrTransactionInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","chain_id_invalid","chain_id_unsupported","query_invalid","transaction_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ReceiptNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["receipt_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"Token":{"type":"object","properties":{"address":{"description":"The TIP-20 token contract address on Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"admin":{"description":"Token admin from the onchain `TokenCreated` event, present when requested via `include=admin` and indexed data is available.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"currency":{"type":"string","description":"The currency label for this token, such as `USD` for USD-denominated stablecoins.","examples":["USD"]},"createdAt":{"description":"Token creation timestamp, present when requested via `include=createdAt` and indexed data is available.","examples":["2024-01-01T00:00:00Z"],"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))$"},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"holderCount":{"description":"The number of accounts that currently hold a positive balance of this token, when indexed holder data is available.","examples":[1234],"type":"integer","minimum":0,"maximum":9007199254740991},"id":{"type":"string","description":"A stable resource ID for this token, equal to its contract address.","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"logoUri":{"description":"A URL for the token’s logo image, when one is available.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"},"name":{"type":"string","description":"The token’s human-readable name.","examples":["Bridged USDC (Stargate)"]},"quoteToken":{"description":"Quote token from the onchain `TokenCreated` event, present when requested via `include=quoteToken` and indexed data is available.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"symbol":{"type":"string","description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC.e"]},"totalSupply":{"description":"The token’s total supply as a decimal string in the smallest unit, so large values keep full precision.","examples":["10850791186630"],"type":"string","pattern":"^\\d+$"},"transferStats":{"description":"Lifetime `Transfer` event statistics, present when requested via `include=transferStats` and indexed data is available.","type":"object","properties":{"count":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The total number of `Transfer` events emitted by this token.","examples":[12345]},"firstAt":{"anyOf":[{"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))$"},{"type":"null"}],"description":"The time of this token’s first `Transfer` event, or `null` if no transfers exist.","examples":["2024-01-01T00:00:00Z"]},"lastAt":{"anyOf":[{"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))$"},{"type":"null"}],"description":"The time of this token’s most recent `Transfer` event, or `null` if no transfers exist.","examples":["2024-06-01T12:00:00Z"]}},"required":["count","firstAt","lastAt"]},"verified":{"type":"boolean","description":"Whether this token is in Tempo’s curated verified token list.","examples":[true]}},"required":["address","currency","decimals","id","name","symbol","verified"],"description":"Token metadata for a TIP-20 token, including name, symbol, decimals, supply, and optional indexed details."},"TokenList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Token"},"description":"The tokens in this page."},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of TIP-20 tokens on Tempo."},"ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrSymbolInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","chain_id_invalid","chain_id_unsupported","query_invalid","symbol_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrTokenInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","chain_id_invalid","chain_id_unsupported","query_invalid","token_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"TokenLogoNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["token_logo_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"TokenHolder":{"type":"object","properties":{"address":{"description":"The account address that holds this token.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"balance":{"type":"string","pattern":"^\\d+$","description":"A non-negative whole number, given as a decimal string so very large token amounts keep full precision. Expressed in the smallest unit of the token.","examples":["1000000"]},"id":{"type":"string","description":"A stable resource ID for this holder, equal to the holder address.","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["address","balance","id"],"description":"One account holding a positive balance of this TIP-20 token."},"TokenHolderListMeta":{"description":"Extra resources you requested with `include`.","type":"object","properties":{"totalCountCapped":{"description":"Whether `totalCount` reached the API count cap; holder counts are exact here.","type":"boolean","examples":[false]},"token":{"$ref":"#/components/schemas/TokenReference"},"totalCount":{"description":"The total number of token holders, returned when you request `include=totalCount`.","type":"integer","minimum":0,"maximum":9007199254740991,"examples":[42]}}},"TokenHolderList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TokenHolder"},"description":"The holders in this page, ordered by balance from highest to lowest."},"meta":{"$ref":"#/components/schemas/TokenHolderListMeta"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of accounts holding this TIP-20 token."},"TransactionCall":{"type":"object","properties":{"data":{"description":"Call data sent to the contract, as `0x`-prefixed bytes.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"to":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}],"description":"The address this call targets, or `null` when it creates a contract."}},"required":["to"],"description":"One decoded call inside a Tempo account-abstraction transaction."},"RpcTransactionAccessListItem":{"type":"object","properties":{"address":{"description":"The account whose storage slots are listed in this access-list entry.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"storageKeys":{"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"description":"The storage slot keys the transaction plans to access."}},"required":["address","storageKeys"],"additionalProperties":{},"description":"One EIP-2930 access-list entry that predeclares an account and storage slots."},"RpcTransactionCall":{"type":"object","properties":{"data":{"description":"Call data for this call; this is the same bytes as `input` when both are present.","anyOf":[{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},{"type":"null"}],"examples":["0xdeadbeef"]},"input":{"description":"Call data sent to the contract, as `0x`-prefixed bytes.","anyOf":[{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},{"type":"null"}],"examples":["0xdeadbeef"]},"to":{"description":"The address this call targets, or `null` when the call creates a contract.","anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}]},"value":{"description":"Native value sent with this call, as a hex quantity.","anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]}},"additionalProperties":{},"description":"One operation inside a Tempo account-abstraction transaction."},"RpcTransactionSignatureEnvelope":{"description":"A signature envelope exactly as returned by JSON-RPC.","type":"object","properties":{"type":{"description":"The signature scheme used by this envelope, such as `secp256k1`, `p256`, or `keychain` when the RPC includes it.","examples":["secp256k1"],"type":"string"}},"additionalProperties":{}},"RpcTransaction":{"type":"object","properties":{"aaAuthorizationList":{"description":"Tempo account-abstraction authorizations attached to the transaction.","type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}},"accessList":{"description":"EIP-2930 access list that predeclares accounts and storage slots for the transaction.","type":"array","items":{"$ref":"#/components/schemas/RpcTransactionAccessListItem"}},"authorizationList":{"description":"EIP-7702 authorizations attached to the transaction.","type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}},"blobVersionedHashes":{"description":"Versioned blob hashes for EIP-4844 blob data.","type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"blockHash":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"null"}],"description":"The block hash once included, or `null` while the transaction is pending."},"blockNumber":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}],"description":"The block number once included, or `null` while the transaction is pending."},"blockTimestamp":{"description":"The block timestamp for the block that included this transaction.","anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]},"calls":{"description":"Decoded calls for Tempo account-abstraction transactions.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/RpcTransactionCall"},"examples":[[{"data":"0xdeadbeef","input":"0xdeadbeef","to":null,"value":"0x0"}]]},{"type":"null","examples":[null]}],"examples":[[{"data":"0xdeadbeef","input":"0xdeadbeef","to":null,"value":"0x0"}]]},"chainId":{"description":"The chain ID that the transaction is valid on; legacy transactions may omit it.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"feePayer":{"description":"The address that paid the transaction fee.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"feePayerSignature":{"description":"A signature envelope exactly as returned by JSON-RPC.","examples":[{"type":"secp256k1"}],"anyOf":[{"$ref":"#/components/schemas/RpcTransactionSignatureEnvelope"},{"type":"null"}]},"feeToken":{"description":"The fee token requested by the transaction; Tempo fees are paid in USD stablecoins such as `pathUSD`.","anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}]},"from":{"description":"The address that submitted or authorized the transaction.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"gas":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Maximum gas the transaction is allowed to use.","examples":["0x1a"]},"gasPrice":{"description":"Gas price for legacy-style transactions, expressed as a decimal string when humanized.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"hash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies this transaction.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"input":{"description":"Call data for non-Tempo transaction formats, as `0x`-prefixed bytes.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"keyAuthorization":{"description":"Key authorization data attached to this Tempo transaction.","examples":[{}],"anyOf":[{"type":"object","properties":{},"additionalProperties":{}},{"type":"null"}]},"maxFeePerBlobGas":{"description":"Maximum fee per blob gas for EIP-4844 blob data.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"maxFeePerGas":{"description":"Maximum total fee per gas the sender is willing to pay.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"maxPriorityFeePerGas":{"description":"Maximum priority fee per gas for EIP-1559-style transactions.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"nonce":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Nonce from the sender account that orders and de-duplicates transactions.","examples":["0x1a"]},"nonceKey":{"description":"Tempo two-dimensional nonce key used to group nonce sequences.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"r":{"description":"The `r` value from the transaction ECDSA signature.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"s":{"description":"The `s` value from the transaction ECDSA signature.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"signature":{"$ref":"#/components/schemas/RpcTransactionSignatureEnvelope"},"to":{"description":"The recipient address, or `null` when the transaction creates a contract.","anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}]},"transactionIndex":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}],"description":"The transaction position within its block, or `null` while pending."},"type":{"description":"Raw transaction type byte, such as `0x2` for EIP-1559 or `0x76` for Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0x2"]},"v":{"description":"The `v` recovery value from the transaction ECDSA signature.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"validAfter":{"description":"Earliest Unix timestamp when this Tempo transaction may be included.","examples":["0x0"],"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]},"validBefore":{"description":"Latest Unix timestamp when this Tempo transaction may be included.","examples":["0xffffffff"],"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]},"value":{"description":"Native value sent by non-Tempo transaction formats.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"yParity":{"description":"The y-parity value from the transaction signature.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]}},"required":["blockHash","blockNumber","from","gas","hash","nonce","transactionIndex","type"],"additionalProperties":{},"description":"The original JSON-RPC transaction payload."},"TransactionMeta":{"type":"object","properties":{"receipt":{"$ref":"#/components/schemas/TransactionReceipt"},"rpc":{"$ref":"#/components/schemas/RpcTransaction"}},"required":["rpc"],"description":"The original JSON-RPC payload plus any resources requested with `include`."},"Transaction":{"type":"object","properties":{"blockHash":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"null"}],"description":"The block hash once included, or `null` while the transaction is pending."},"blockNumber":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"The block number once included, or `null` while the transaction is pending.","examples":[23456789]},"calls":{"description":"Decoded calls for Tempo account-abstraction transactions.","type":"array","items":{"$ref":"#/components/schemas/TransactionCall"},"examples":[[{"data":"0xdeadbeef","to":null}]]},"chainId":{"description":"The chain ID that this transaction belongs to.","examples":[4217],"type":"integer","minimum":0,"maximum":9007199254740991},"feeToken":{"$ref":"#/components/schemas/RpcTokenReference"},"gas":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Maximum gas the transaction is allowed to use.","examples":[21000]},"gasPrice":{"description":"Gas price for legacy-style transactions, expressed as a decimal string when humanized.","type":"string","pattern":"^\\d+$","examples":["1000000"]},"hash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies this transaction.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"id":{"description":"Stable resource ID for this API response; it is the transaction hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"input":{"description":"Call data for non-Tempo transaction formats, as `0x`-prefixed bytes.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"maxFeePerGas":{"description":"Maximum total fee per gas the sender is willing to pay.","type":"string","pattern":"^\\d+$","examples":["1000000"]},"maxPriorityFeePerGas":{"description":"Maximum priority fee per gas for EIP-1559-style transactions.","type":"string","pattern":"^\\d+$","examples":["1000000"]},"meta":{"$ref":"#/components/schemas/TransactionMeta"},"nonce":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Nonce from the sender account that orders and de-duplicates transactions.","examples":[0]},"nonceKey":{"description":"Tempo two-dimensional nonce key used by Tempo transactions.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"recipient":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}],"description":"The recipient address, or `null` when the transaction creates a contract."},"sender":{"description":"The address that submitted or authorized the transaction.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"timestamp":{"anyOf":[{"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))$"},{"type":"null"}],"description":"The block timestamp as ISO 8601, or `null` while the transaction is pending.","examples":["2024-01-01T00:00:00Z"]},"transactionIndex":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"The transaction position within its block, or `null` while pending.","examples":[0]},"type":{"$ref":"#/components/schemas/TransactionType"},"validAfter":{"description":"Earliest ISO 8601 time when this Tempo transaction may be included.","examples":["2024-01-01T00:00:00Z"],"anyOf":[{"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))$"},{"type":"null"}]},"validBefore":{"description":"Latest ISO 8601 time when this Tempo transaction may be included.","examples":["2024-01-01T00:00:00Z"],"anyOf":[{"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))$"},{"type":"null"}]},"value":{"type":"string","pattern":"^\\d+$","description":"Native value transferred by this transaction, as a decimal string.","examples":["1000000"]}},"required":["blockHash","blockNumber","gas","hash","id","meta","nonce","recipient","sender","timestamp","transactionIndex","type","value"],"description":"A transaction formatted for API clients, with decoded fields and the original JSON-RPC payload under `meta.rpc`."},"TokenTransactionListMeta":{"description":"Extra resources you requested with `include`.","type":"object","properties":{"totalCountCapped":{"description":"Whether `totalCount` reached the API count cap; when `true`, treat the count as a lower bound.","type":"boolean","examples":[false]},"token":{"$ref":"#/components/schemas/TokenReference"},"totalCount":{"description":"The capped total number of matching transactions, returned when you request `include=totalCount`.","type":"integer","minimum":0,"maximum":9007199254740991,"examples":[42]}}},"TokenTransactionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Transaction"},"description":"The transactions in this page."},"meta":{"$ref":"#/components/schemas/TokenTransactionListMeta"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of transactions that interact with this token contract."},"TransactionListMeta":{"description":"Response-level metadata requested with `include`, such as `totalCount`.","type":"object","properties":{"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]}},"required":["totalCountCapped","totalCount"]},"TransactionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Transaction"},"description":"Transactions on this page."},"meta":{"$ref":"#/components/schemas/TransactionListMeta"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of transactions ordered by block number and transaction position."},"TransactionNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["transaction_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"TransactionActivityList":{"type":"object","properties":{"chainId":{"description":"Chain ID containing the transaction.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"data":{"type":"array","items":{"$ref":"#/components/schemas/ActivityItem"},"description":"Activity items classified from the transaction."},"meta":{"$ref":"#/components/schemas/ActivityMeta"}},"required":["chainId","data"],"description":"The human-readable activity that happened on a transaction."},"TransactionAmbiguousError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["transaction_ambiguous"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ValuedTokenAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]},"valuation":{"description":"The amount’s nominal value in the requested `valuation.currency`. `null` when the token is unverified, its display currency has no rate, or rates were unavailable.","anyOf":[{"$ref":"#/components/schemas/ValuationValue"},{"type":"null"}]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token amount carrying its nominal value in the requested denomination."},"TokenTransferToken":{"type":"object","properties":{"address":{"description":"The TIP-20 token contract address on Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"currency":{"type":"string","description":"The currency label for this token, such as `USD` for USD-denominated stablecoins.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"logoUri":{"description":"A URL for the token’s logo image, returned with `include=token.logoUri`.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"},"name":{"type":"string","description":"The token’s human-readable name.","examples":["Bridged USDC (Stargate)"]},"symbol":{"type":"string","description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC.e"]},"verified":{"description":"Whether this token is in Tempo’s curated verified list, returned with `include=token.verified`.","examples":[true],"type":"boolean"}},"required":["address","currency","decimals","name","symbol"],"description":"The token that moved."},"TokenTransfer":{"type":"object","properties":{"attribution":{"description":"The resolved MPP service name, when the transfer memo matches a known service fingerprint. Returned when you request `include=memo`.","examples":["example-service"],"type":"string"},"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The block number where this transfer was recorded.","examples":[23456789]},"destinationAmount":{"$ref":"#/components/schemas/ValuedTokenAmount"},"destinationToken":{"$ref":"#/components/schemas/TokenTransferToken"},"id":{"type":"string","description":"A stable resource ID for this transfer, built from `${transactionHash}-${logIndex}`.","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-0"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The transfer event’s log index within the block.","examples":[0]},"memo":{"description":"The decoded text memo from the matching `TransferWithMemo` event, when one is present. Returned when you request `include=memo`.","examples":["Payment for invoice 123"],"type":"string"},"recipient":{"description":"The account address that received the tokens.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"sender":{"description":"The account address that sent the tokens.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"sourceAmount":{"$ref":"#/components/schemas/ValuedTokenAmount"},"sourceToken":{"$ref":"#/components/schemas/TokenTransferToken"},"timestamp":{"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 block timestamp when this transfer was recorded.","examples":["2024-01-01T00:00:00Z"]},"transactionHash":{"description":"The hash of the transaction that emitted this transfer event.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["blockNumber","id","logIndex","recipient","sender","sourceAmount","sourceToken","timestamp","transactionHash"],"description":"One TIP-20 token transfer event, optionally including a payment memo for reconciliation or invoices."},"TokenTransferListMeta":{"description":"Page-level resources: opt-in counts and valuation rate provenance.","type":"object","properties":{"valuation":{"$ref":"#/components/schemas/ValuationPricing"},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]},"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]}}},"TokenTransferList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TokenTransfer"},"description":"The transfers in this page."},"meta":{"$ref":"#/components/schemas/TokenTransferListMeta"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of TIP-20 token transfer events across the chain."},"VerifiedToken":{"type":"object","properties":{"address":{"description":"The TIP-20 token contract address on Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"currency":{"type":"string","minLength":1,"description":"The currency label for this token, such as `USD` for USD-denominated stablecoins.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":255,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"logoUri":{"description":"The curated HTTPS URL for this token’s logo image, when one is set.","examples":["https://assets.tempo.xyz/icons/usdc.svg"],"type":"string","format":"uri"},"name":{"type":"string","minLength":1,"description":"The token’s human-readable name.","examples":["USD Coin"]},"symbol":{"type":"string","minLength":1,"description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC"]},"id":{"description":"A stable resource ID for this token, equal to its contract address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["address","currency","decimals","name","symbol","id"],"description":"One curated, verified TIP-20 token that wallets and apps can present as trusted."},"VerifiedTokenList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VerifiedToken"},"description":"The curated verified TIP-20 tokens.","examples":[[{"address":"0x20c0000000000000000000008f5425160ebe5525","currency":"USD","decimals":6,"id":"0x20c0000000000000000000008f5425160ebe5525","name":"USD Coin","symbol":"USDC"}]]}},"required":["data"],"description":"A non-paginated list of curated, verified TIP-20 tokens."},"VerifiedTokenCurrencyList":{"type":"object","properties":{"data":{"type":"array","items":{"type":"string","examples":["USD"]},"description":"The sorted, unique currency labels used by tokens in the verified list.","examples":[["USD"]]}},"required":["data"],"description":"The distinct currencies present in a chain’s verified token list."},"VerifiedTokenNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["verified_token_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"WebhookEventType":{"type":"object","properties":{"description":{"type":"string","description":"Plain-English description of the event type.","examples":["TIP-20 token transfer event."]},"type":{"type":"string","enum":["block:created","funding:deposit.updated","funding:transfer.updated","log:emitted","token:transfer","transaction:included"],"description":"Event type you can subscribe to.","examples":["token:transfer"]}},"required":["description","type"],"description":"One webhook event type available for subscription."},"WebhookEventTypeList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WebhookEventType"},"description":"Webhook event types available for subscription.","examples":[[{"description":"TIP-20 token transfer event.","type":"token:transfer"}]]}},"required":["data"],"description":"List of webhook event types Tempo can send."},"ApiKeyMalformedError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"WebhooksNotEnabledError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["webhooks_not_enabled"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"WebhookContext":{"examples":[{"title":"Production transfers"}],"type":"object","properties":{"description":{"type":"string","maxLength":500,"description":"Longer description of what this subscription is for.","examples":["Notify #ops when a large USDC transfer settles on mainnet."]},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","maxLength":500},"description":"Arbitrary key/value labels echoed on every delivered event and rendered by destinations (Slack fields, Better Stack log fields). Keys are 1–64 chars, values ≤500 chars, ≤20 entries.","examples":[{"env":"prod","team":"payments"}]},"title":{"type":"string","maxLength":120,"description":"Short label for this subscription.","examples":["Prod USDC large transfers"]}},"description":"Human context describing what this webhook subscription is for."},"WebhookDestination":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"url","examples":["url"]},"url":{"type":"string","format":"uri","description":"Your HTTPS endpoint where Tempo sends signed event POSTs.","examples":["https://example.com/webhooks"]}},"required":["type","url"]},{"type":"object","properties":{"type":{"type":"string","const":"slack","examples":["slack"]},"url":{"type":"string","format":"uri","description":"Your Slack incoming-webhook URL (`https://hooks.slack.com/services/…`).","examples":["https://hooks.slack.com/services/T000/B000/XXXXXXXX"]}},"required":["type","url"]},{"type":"object","properties":{"token":{"type":"string","minLength":1,"description":"Your Better Stack source token (sent as `Authorization: Bearer …`).","examples":["FczKcxEhjEDE58dBX7XaeX1q"]},"type":{"type":"string","const":"betterstack","examples":["betterstack"]},"url":{"type":"string","format":"uri","description":"Your Better Stack source ingest host URL (`https://<host>.betterstackdata.com`).","examples":["https://s1234567.eu-nbg-2.betterstackdata.com"]}},"required":["token","type","url"]}],"description":"Delivery destination: an HTTPS URL, a Slack incoming-webhook URL, or a Better Stack source.","examples":[{"type":"url","url":"https://example.com/webhooks"}]},"CreateWebhookRequest":{"oneOf":[{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"destination":{"$ref":"#/components/schemas/WebhookDestination"},"eventType":{"type":"string","const":"token:transfer","description":"Event type you want Tempo to send to your webhook URL.","examples":["token:transfer"]},"filters":{"type":"object","properties":{"address":{"description":"Match transfers where this account is either the sender or the recipient.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"recipient":{"description":"Match transfers sent to this recipient address (`to`).","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"sender":{"description":"Match transfers sent from this sender address (`from`).","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"token":{"description":"Match transfers for this TIP-20 token contract address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]}},"description":"Filters that narrow which TIP-20 transfer events trigger this webhook.","title":"Transfer filters"}},"required":["destination","eventType"],"title":"Transfer subscription"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"destination":{"$ref":"#/components/schemas/WebhookDestination"},"eventType":{"type":"string","const":"transaction:included","description":"Event type you want Tempo to send to your webhook URL.","examples":["transaction:included"]},"filters":{"type":"object","properties":{"hash":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"object","properties":{"eq":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["not"],"additionalProperties":false}],"description":"Match this exact transaction hash (or any of several)."},"address":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"object","properties":{"eq":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["not"],"additionalProperties":false}],"description":"Match transactions where this address is the sender or recipient."},"from":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"object","properties":{"eq":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["not"],"additionalProperties":false}],"description":"Match transactions whose sender (`from`) is this."},"to":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"object","properties":{"eq":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["not"],"additionalProperties":false}],"description":"Match transactions sent to this address (root `to`; see `includeCalls`)."},"includeCalls":{"type":"boolean","description":"When true (default), `to`/`address` also match an inner account-abstraction call target (`calls[].to`).","examples":[true]},"value":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Match the transaction value (wei) bounds."},"input":{"anyOf":[{"type":"object","properties":{"selector":{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]}},"required":["selector"],"additionalProperties":false},{"type":"object","properties":{"startsWith":{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]}},"required":["startsWith"],"additionalProperties":false},{"type":"object","properties":{"eq":{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]}},"required":["eq"],"additionalProperties":false}],"description":"Match top-level calldata by 4-byte `selector`, hex `startsWith`, or exact."},"calls":{"type":"object","properties":{"to":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"object","properties":{"eq":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["not"],"additionalProperties":false}]}},"required":["to"],"additionalProperties":false,"description":"Match if ANY inner account-abstraction call targets this address (`calls[].to`)."},"callCount":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Match the number of inner calls (`call_count`)."},"txType":{"anyOf":[{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},{"type":"object","properties":{"eq":{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]}},"required":["not"],"additionalProperties":false}],"description":"Match the transaction type (e.g. `0x76` for Tempo AA)."},"feeToken":{"anyOf":[{"description":"A TIP-20 token contract address — the `0x`-prefixed 20-byte identifier for the token, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},{"type":"object","properties":{"eq":{"description":"A TIP-20 token contract address — the `0x`-prefixed 20-byte identifier for the token, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"A TIP-20 token contract address — the `0x`-prefixed 20-byte identifier for the token, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"A TIP-20 token contract address — the `0x`-prefixed 20-byte identifier for the token, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]}},"required":["not"],"additionalProperties":false}],"description":"Match the fee token address."},"gasLimit":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Match the gas limit bounds."},"maxFeePerGas":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Match the max fee per gas bounds."},"maxPriorityFeePerGas":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Match the max priority fee per gas bounds."},"nonce":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Match the nonce bounds."},"nonceKey":{"anyOf":[{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},{"type":"object","properties":{"eq":{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]}},"required":["not"],"additionalProperties":false}],"description":"Match the nonce key (Tempo AA)."},"validBefore":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Match the `validBefore` bounds (unix s)."},"validAfter":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Match the `validAfter` bounds (unix s)."},"blockNumber":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Match the block-number bounds."},"timestamp":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Match the block timestamp bounds (unix s)."}},"additionalProperties":false,"description":"Filters that narrow which included transactions trigger this webhook.","title":"Included-transaction filters"}},"required":["destination","eventType"],"title":"Included-transaction subscription"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"destination":{"$ref":"#/components/schemas/WebhookDestination"},"eventType":{"type":"string","const":"log:emitted","description":"Event type you want Tempo to send to your webhook URL.","examples":["log:emitted"]},"filters":{"type":"object","properties":{"address":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"object","properties":{"eq":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["not"],"additionalProperties":false}],"description":"Only match logs emitted by this contract address (or any of several).","examples":["0x20c0000000000000000000008f5425160ebe5525"]},"signature":{"type":"string","description":"Human-readable ABI event signature used to derive `topic0` and decode `args`, e.g. `event Transfer(address indexed from, address indexed to, uint256 value)`.","examples":["event Transfer(address indexed from, address indexed to, uint256 value)"]},"topic0":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"object","properties":{"eq":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["not"],"additionalProperties":false}],"description":"Event signature hash (topic 0). Mutually exclusive with `signature`.","examples":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]},"topic1":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"object","properties":{"eq":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["not"],"additionalProperties":false}],"description":"Raw indexed argument 1 (topic 1).","examples":["0x000000000000000000000000e7687128b0a808c2831ff94d4f7b2fb35c65af38"]},"topic2":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"object","properties":{"eq":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["not"],"additionalProperties":false}],"description":"Raw indexed argument 2 (topic 2).","examples":["0x0000000000000000000000009e39034aae71fb89f66061a2602eb6efec271754"]},"topic3":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"object","properties":{"eq":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["not"],"additionalProperties":false}],"description":"Raw indexed argument 3 (topic 3).","examples":["0x0000000000000000000000000000000000000000000000000000000000000000"]},"args":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Match decoded event arguments by name (indexed or non-indexed). Requires `signature`. Each value is an exact value or a super admin object.","examples":[{"to":"0x9e39034aae71fb89f66061a2602eb6efec271754"}]},"blockNumber":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Only match logs within these block-number bounds."}},"additionalProperties":false,"description":"Filters that narrow which contract event logs trigger this webhook.","title":"Log filters"}},"required":["destination","eventType","filters"],"title":"Log subscription"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"destination":{"$ref":"#/components/schemas/WebhookDestination"},"eventType":{"type":"string","const":"block:created","description":"Event type you want Tempo to send to your webhook URL.","examples":["block:created"]},"filters":{"type":"object","properties":{"number":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Only match blocks within these block-number bounds."},"miner":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"object","properties":{"eq":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["not"],"additionalProperties":false}],"description":"Only match blocks produced by this address (the miner/producer).","examples":["0x0000000000000000000000000000000000000000"]},"proposer":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"object","properties":{"eq":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["eq"],"additionalProperties":false},{"type":"object","properties":{"in":{"minItems":1,"maxItems":64,"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}}},"required":["in"],"additionalProperties":false},{"type":"object","properties":{"not":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["not"],"additionalProperties":false}],"description":"Only match blocks proposed by this consensus proposer (when available)."},"gasUsed":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Only match blocks whose total gas used is within these bounds."},"gasLimit":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Only match blocks whose gas limit is within these bounds."},"timestamp":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"object","properties":{"eq":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"gte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lt":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},"lte":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]}},"additionalProperties":false}],"description":"Only match blocks whose unix timestamp (seconds) is within these bounds."}},"additionalProperties":false,"description":"Filters that narrow which new blocks trigger this webhook.","title":"Block filters"}},"required":["destination","eventType"],"title":"Block subscription"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"destination":{"$ref":"#/components/schemas/WebhookDestination"},"eventType":{"type":"string","const":"funding:deposit.updated","description":"Event type for committed funding deposit changes.","examples":["funding:deposit.updated"]},"filters":{"type":"object","properties":{"depositAddressId":{"type":"string","pattern":"^fda_[A-Za-z0-9_-]+$","description":"Funding deposit address that detected the transfer.","examples":["fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx"]},"recipient":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"status":{"type":"string","enum":["action-required","bridging","completed","detected","refunded","refunding","settling"],"description":"Current delivery status of the deposit.","examples":["detected"]}},"additionalProperties":false,"description":"Filters that narrow which funding deposit changes trigger this webhook.","title":"Funding deposit filters"}},"required":["destination","eventType"],"title":"Funding deposit subscription"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"destination":{"$ref":"#/components/schemas/WebhookDestination"},"eventType":{"type":"string","const":"funding:transfer.updated","description":"Event type for committed funding transfer changes.","examples":["funding:transfer.updated"]},"filters":{"type":"object","properties":{"id":{"type":"string","description":"Funding transfer id (`ftr_…`, lexically time-ordered).","examples":["ftr_001785729600000_2ZPE2gvateYEQ0dQslgvkhjx"]},"status":{"type":"string","enum":["awaiting-source","processing","refunding","completed","refunded","action-required","expired"],"description":"Lifecycle status of the funding transfer.","examples":["awaiting-source"]}},"additionalProperties":false,"description":"Filters that narrow which funding transfer changes trigger this webhook.","title":"Funding transfer filters"}},"required":["destination","eventType"],"title":"Funding transfer subscription"}],"description":"Details for creating a webhook subscription."},"CreateWebhookResponse":{"type":"object","properties":{"chainId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Tempo chain ID for this subscription.","examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 subscription was created, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]},"destination":{"$ref":"#/components/schemas/WebhookDestination"},"environment":{"description":"API-key environment for private resource events, when applicable.","examples":["production"],"type":"string","enum":["production","sandbox"]},"eventType":{"type":"string","enum":["block:created","funding:deposit.updated","funding:transfer.updated","log:emitted","token:transfer","transaction:included"],"description":"Event type you can subscribe to.","examples":["token:transfer"]},"expiresAt":{"description":"When the subscription expires, as an ISO 8601 timestamp. Only MPP-paid subscriptions expire.","examples":["2024-01-01T00:00:00Z"],"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))$"},"failureCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of delivery failures in a row for this subscription, capped at the auto-disable threshold.","examples":[0]},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Filters applied to this event type.","examples":[{"address":"0x20c0000000000000000000008f5425160ebe5525"}]},"id":{"type":"string","description":"Webhook subscription ID (`wh_…`).","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"lastDeliveryAt":{"description":"When Tempo last delivered an event successfully, as an ISO 8601 timestamp. Refreshed at most once per minute during sustained delivery.","examples":["2024-01-01T00:00:00Z"],"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))$"},"status":{"type":"string","enum":["active","disabled","paused"],"description":"Current state of the webhook subscription.","examples":["active"]},"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":"When the subscription was last changed, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]},"secret":{"type":"string","description":"HMAC signing secret (`whsec_…`) used to verify Tempo webhook signatures. It is shown once when you create the webhook, so store it now.","examples":["whsec_abc123"]}},"required":["chainId","createdAt","destination","eventType","failureCount","filters","id","status","updatedAt","secret"],"description":"The new webhook subscription, including the one-time signing secret."},"ApiKeyMalformedOrBodyInvalidOrChainIdUnsupportedOrEventTypeUnsupportedOrFiltersInvalidOrUrlInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","body_invalid","chain_id_unsupported","event_type_unsupported","filters_invalid","url_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ApiKeyForbiddenOrApiKeyIpForbiddenOrForbiddenOrLimitExceededError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_forbidden","api_key_ip_forbidden","forbidden","limit_exceeded"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"WebhookPublicDestination":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"url","examples":["url"]},"url":{"type":"string","format":"uri","description":"Your HTTPS endpoint where Tempo sends signed event POSTs.","examples":["https://example.com/webhooks"]}},"required":["type","url"]},{"type":"object","properties":{"type":{"type":"string","const":"slack","examples":["slack"]},"url":{"type":"string","const":"https://hooks.slack.com/…","description":"Redacted Slack webhook URL.","examples":["https://hooks.slack.com/…"]}},"required":["type","url"]},{"type":"object","properties":{"token":{"type":"string","const":"[redacted]","description":"Redacted Better Stack source token.","examples":["[redacted]"]},"type":{"type":"string","const":"betterstack","examples":["betterstack"]},"url":{"type":"string","format":"uri","description":"Your Better Stack source ingest host URL (`https://<host>.betterstackdata.com`).","examples":["https://s1234567.eu-nbg-2.betterstackdata.com"]}},"required":["token","type","url"]}],"description":"Delivery destination with bearer credentials redacted.","examples":[{"type":"url","url":"https://example.com/webhooks"}]},"Webhook":{"type":"object","properties":{"chainId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Tempo chain ID for this subscription.","examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 subscription was created, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]},"destination":{"$ref":"#/components/schemas/WebhookPublicDestination"},"environment":{"description":"API-key environment for private resource events, when applicable.","examples":["production"],"type":"string","enum":["production","sandbox"]},"eventType":{"type":"string","enum":["block:created","funding:deposit.updated","funding:transfer.updated","log:emitted","token:transfer","transaction:included"],"description":"Event type you can subscribe to.","examples":["token:transfer"]},"expiresAt":{"description":"When the subscription expires, as an ISO 8601 timestamp. Only MPP-paid subscriptions expire.","examples":["2024-01-01T00:00:00Z"],"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))$"},"failureCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of delivery failures in a row for this subscription, capped at the auto-disable threshold.","examples":[0]},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Filters applied to this event type.","examples":[{"address":"0x20c0000000000000000000008f5425160ebe5525"}]},"id":{"type":"string","description":"Webhook subscription ID (`wh_…`).","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"lastDeliveryAt":{"description":"When Tempo last delivered an event successfully, as an ISO 8601 timestamp. Refreshed at most once per minute during sustained delivery.","examples":["2024-01-01T00:00:00Z"],"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))$"},"status":{"type":"string","enum":["active","disabled","paused"],"description":"Current state of the webhook subscription.","examples":["active"]},"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":"When the subscription was last changed, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]}},"required":["chainId","createdAt","destination","eventType","failureCount","filters","id","status","updatedAt"],"description":"A webhook subscription that tells Tempo which onchain events to send to its destination."},"WebhookList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"},"description":"Webhook subscriptions on this page.","examples":[[]]},"meta":{"description":"Extra response metadata requested with `include`.","examples":[{"totalCount":1,"totalCountCapped":false}],"type":"object","properties":{"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]}},"required":["totalCountCapped","totalCount"]},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of webhook subscriptions."},"ApiKeyMalformedOrQueryInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","query_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ApiKeyMalformedOrParamInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","param_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"WebhookNotFoundOrWebhooksNotEnabledError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["webhook_not_found","webhooks_not_enabled"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"WebhookDelivery":{"type":"object","properties":{"attempt":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Retry attempt number for this delivery, starting at 1.","examples":[1]},"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 this delivery attempt was created, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]},"error":{"description":"Why delivery failed, present when `status` is `failed`.","examples":["Connection timed out"],"type":"string"},"eventId":{"type":"string","description":"Stable event ID (`evt_…`) you can use to dedupe webhook deliveries.","examples":["evt_abc123"]},"id":{"type":"string","description":"Webhook delivery ID (`whd_…`).","examples":["whd_001718668800000_C1yJkk7CuML98HFthEDk9PsY"]},"requestUrl":{"type":"string","format":"uri","description":"Your callback URL that Tempo attempted to deliver to.","examples":["https://example.com/webhooks"]},"responseMs":{"description":"How long the delivery attempt took in milliseconds, when Tempo made a request.","examples":[12],"type":"integer","minimum":0,"maximum":9007199254740991},"responseStatus":{"description":"HTTP status your endpoint returned, when Tempo received a response.","examples":[200],"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["failed","pending","succeeded"],"description":"Outcome of a webhook delivery attempt.","examples":["succeeded"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) this delivery belongs to.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]}},"required":["attempt","createdAt","eventId","id","requestUrl","status","subscriptionId"],"description":"One attempt by Tempo to deliver an event to a webhook destination."},"WebhookDeliveryList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WebhookDelivery"},"description":"Webhook delivery attempts on this page.","examples":[[]]},"meta":{"description":"Extra response metadata requested with `include`.","examples":[{"totalCount":1,"totalCountCapped":false}],"type":"object","properties":{"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]}},"required":["totalCountCapped","totalCount"]},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of webhook delivery attempts."},"ApiKeyMalformedOrParamInvalidOrQueryInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","param_invalid","query_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"PingWebhookResponse":{"type":"object","properties":{"delivered":{"type":"boolean","description":"Whether your endpoint returned a 2xx response.","examples":[true]},"error":{"description":"Why the delivery failed, present when `delivered` is `false`.","examples":["Connection timed out"],"type":"string"},"eventId":{"type":"string","description":"Synthetic event ID (`evt_…`) Tempo sent for this ping.","examples":["evt_abc123"]},"responseMs":{"description":"Round-trip delivery time in milliseconds, when the request completed.","examples":[12],"type":"integer","minimum":0,"maximum":9007199254740991},"responseStatus":{"description":"HTTP status your endpoint returned, when Tempo received a response.","examples":[200],"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["delivered","eventId"],"description":"Result of sending a synthetic ping event to a webhook destination."},"RetryWebhookDeliveryResponse":{"type":"object","properties":{"delivered":{"type":"boolean","description":"Whether your endpoint returned a 2xx response.","examples":[true]},"error":{"description":"Why the delivery failed, present when `delivered` is `false`.","examples":["Connection timed out"],"type":"string"},"eventId":{"type":"string","description":"Synthetic event ID (`evt_…`) Tempo sent for this ping.","examples":["evt_abc123"]},"responseMs":{"description":"Round-trip delivery time in milliseconds, when the request completed.","examples":[12],"type":"integer","minimum":0,"maximum":9007199254740991},"responseStatus":{"description":"HTTP status your endpoint returned, when Tempo received a response.","examples":[200],"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["delivered","eventId"],"description":"Result of sending a synthetic ping event to a webhook destination."},"DeliveryNotFoundOrWebhookNotFoundOrWebhooksNotEnabledError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["delivery_not_found","webhook_not_found","webhooks_not_enabled"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"UpdateWebhookRequest":{"type":"object","properties":{"context":{"description":"New human context, or `null` to clear it.","anyOf":[{"$ref":"#/components/schemas/WebhookContext"},{"type":"null"}]},"destination":{"$ref":"#/components/schemas/WebhookDestination"},"filters":{"description":"New filters to apply to future webhook events.","examples":[{"address":"0x20c0000000000000000000008f5425160ebe5525"}],"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"status":{"description":"New lifecycle status, such as pausing or resuming delivery.","type":"string","enum":["active","disabled","paused"],"examples":["active"]}},"description":"Fields to update on the webhook subscription."},"ApiKeyMalformedOrBodyInvalidOrDestinationTransitionInvalidOrFiltersInvalidOrParamInvalidOrUrlInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","body_invalid","destination_transition_invalid","filters_invalid","param_invalid","url_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"DeleteWebhookResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the webhook subscription that was deleted.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]}},"required":["id"],"description":"Confirmation that the webhook subscription was deleted."},"ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrSenderTagInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","chain_id_invalid","chain_id_unsupported","query_invalid","sender_tag_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","chain_id_invalid","chain_id_unsupported"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"CoinGeckoBlock":{"type":"object","properties":{"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block number on Tempo.","examples":[23456789]},"blockTimestamp":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block time as Unix seconds.","examples":[1718668800]}},"required":["blockNumber","blockTimestamp"],"description":"A Tempo block reference with its number and timestamp."},"CoinGeckoLatestBlockResponse":{"type":"object","properties":{"block":{"$ref":"#/components/schemas/CoinGeckoBlock"}},"required":["block"],"description":"The newest Tempo block that has been indexed for CoinGecko-compatible data."},"NotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"CoinGeckoAddress":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Checksummed address of the taker, usually the transaction sender.","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"CoinGeckoAsset":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/CoinGeckoAddress"},"name":{"type":"string","description":"Human-readable token name.","examples":["Tempo USD"]},"symbol":{"type":"string","description":"Short token ticker symbol.","examples":["USDT"]},"decimals":{"type":"integer","minimum":0,"maximum":255,"description":"Number of decimal places the token uses.","examples":[6]},"totalSupply":{"type":"string","description":"Total token supply as a decimal string, already adjusted for token decimals.","examples":["1000000"]}},"required":["id","name","symbol","decimals","totalSupply"],"description":"A TIP-20 token in CoinGecko’s GeckoTerminal asset format."},"CoinGeckoAssetResponse":{"type":"object","properties":{"asset":{"$ref":"#/components/schemas/CoinGeckoAsset"}},"required":["asset"],"description":"One TIP-20 token in CoinGecko’s GeckoTerminal asset format."},"AddressInvalidOrApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["address_invalid","api_key_malformed","chain_id_invalid","chain_id_unsupported"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"CoinGeckoPairToken":{"type":"object","properties":{"address":{"$ref":"#/components/schemas/CoinGeckoAddress"},"name":{"type":"string","description":"Human-readable token name.","examples":["Tempo USD"]},"symbol":{"type":"string","description":"Short token ticker symbol.","examples":["USDT"]},"decimals":{"type":"integer","minimum":0,"maximum":255,"description":"Number of decimal places the token uses.","examples":[6]},"totalSupply":{"type":"string","description":"Total token supply as a decimal string, already adjusted for token decimals.","examples":["1000000"]}},"required":["address","name","symbol","decimals","totalSupply"],"description":"One token side of a trading pair."},"CoinGeckoPair":{"type":"object","properties":{"id":{"description":"32-byte onchain order-book key for this trading pair.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"dexKey":{"type":"string","description":"Stable identifier for Tempo’s DEX venue.","examples":["tempo-stablecoin-dex"]},"asset0Id":{"$ref":"#/components/schemas/CoinGeckoAddress"},"asset1Id":{"$ref":"#/components/schemas/CoinGeckoAddress"},"token0":{"$ref":"#/components/schemas/CoinGeckoPairToken"},"token1":{"$ref":"#/components/schemas/CoinGeckoPairToken"},"reserve0":{"type":"string","description":"Best-effort current base-side reserve as a decimal string.","examples":["1000000"]},"reserve1":{"type":"string","description":"Best-effort current quote-side reserve as a decimal string.","examples":["1500000"]},"createdAtBlockNumber":{"examples":[23456789],"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block number where the pair was created, when indexed."},"createdAtBlockTimestamp":{"examples":[1718668800],"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Unix timestamp for when the pair was created, when indexed."},"createdAtTxnId":{"examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"],"type":"string","description":"Transaction hash that created the pair, when indexed."}},"required":["id","dexKey","asset0Id","asset1Id","token0","token1","reserve0","reserve1"],"description":"A Tempo stablecoin DEX trading pair in GeckoTerminal format."},"CoinGeckoPairsResponse":{"type":"object","properties":{"pairs":{"type":"array","items":{"$ref":"#/components/schemas/CoinGeckoPair"},"description":"Trading pairs ordered by creation block."}},"required":["pairs"],"description":"A page of Tempo stablecoin DEX trading pairs."},"CoinGeckoPairResponse":{"type":"object","properties":{"pair":{"$ref":"#/components/schemas/CoinGeckoPair"}},"required":["pair"],"description":"One Tempo stablecoin DEX trading pair."},"ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrPairIdInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","chain_id_invalid","chain_id_unsupported","pair_id_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"CoinGeckoSwapEvent":{"type":"object","properties":{"block":{"$ref":"#/components/schemas/CoinGeckoBlock"},"eventType":{"type":"string","const":"swap","description":"Event type; always `swap` for this feed.","examples":["swap"]},"txnId":{"type":"string","description":"Hash of the transaction that emitted the swap event.","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"txnIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based position of the transaction within its block.","examples":[1]},"eventIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based position of this swap within its transaction.","examples":[0]},"maker":{"$ref":"#/components/schemas/CoinGeckoAddress"},"pairId":{"description":"On-chain order-book key for the trading pair.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"asset0In":{"description":"Base token (`asset0`) amount sent into the swap, when applicable.","examples":["1000"],"type":"string"},"asset1In":{"description":"Quote token (`asset1`) amount sent into the swap, when applicable.","examples":["1500"],"type":"string"},"asset0Out":{"description":"Base token (`asset0`) amount received from the swap, when applicable.","examples":["1000"],"type":"string"},"asset1Out":{"description":"Quote token (`asset1`) amount received from the swap, when applicable.","examples":["1500"],"type":"string"},"priceNative":{"type":"string","description":"Quote-per-base price as a 36-decimal-place string.","examples":["1.5"]},"reserves":{"type":"object","properties":{"asset0":{"type":"string","description":"Best-effort current base-token reserve.","examples":["1000000"]},"asset1":{"type":"string","description":"Best-effort current quote-token reserve.","examples":["1500000"]}},"required":["asset0","asset1"],"description":"Best-effort current reserves for both sides of the pair."}},"required":["block","eventType","txnId","txnIndex","eventIndex","maker","pairId","priceNative","reserves"],"description":"A Tempo DEX swap event in GeckoTerminal format."},"CoinGeckoEventsResponse":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/CoinGeckoSwapEvent"},"description":"Swap events in the requested block range, ordered by block and log index."}},"required":["events"],"description":"Tempo DEX swap events for the requested block range."},"FundingChain":{"type":"object","properties":{"addressFormat":{"type":"string","enum":["base58","base58check","hex"],"description":"Address encoding used by accounts and token identifiers on this chain.","examples":["hex"]},"id":{"type":"string","description":"CAIP-2 chain id.","examples":["eip155:8453"]},"kind":{"type":"string","enum":["evm","solana","tron"],"description":"Chain execution family used for provider routing.","examples":["evm"]},"name":{"type":"string","description":"Human-readable chain name.","examples":["Base"]}},"required":["addressFormat","id","kind","name"],"description":"A normalized chain reference for funding quotes."},"FundingToken":{"type":"object","properties":{"address":{"type":"string","description":"Contract address, mint, or issuer address on the token chain.","examples":["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"currency":{"type":"string","description":"Monetary denomination represented by this token.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of decimal places this token uses.","examples":[6]},"name":{"type":"string","description":"Human-readable token name.","examples":["USD Coin"]},"standard":{"type":"string","description":"Token standard on the token chain.","examples":["ERC-20"]},"symbol":{"type":"string","description":"Short token ticker symbol.","examples":["USDC"]},"tokenKey":{"type":"string","description":"Stable Tempo token key scoped to the token chain.","examples":["eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"verified":{"type":"boolean","description":"Whether Tempo recognizes this token in its funding quote inventory.","examples":[true]}},"required":["address","currency","decimals","name","standard","symbol","tokenKey","verified"],"description":"A normalized token reference for funding quotes."},"FundingProvider":{"type":"object","properties":{"id":{"type":"string","description":"Stable provider id.","examples":["relay"]},"name":{"type":"string","description":"Human-readable provider name.","examples":["Relay"]}},"required":["id","name"],"description":"Provider metadata embedded in a funding quote."},"FundingQuoteQuality":{"type":"object","properties":{"estimatedSeconds":{"description":"Estimated settlement time in seconds, when known.","examples":[2],"type":"integer","minimum":0,"maximum":9007199254740991},"liquiditySource":{"type":"string","description":"Provider source for the live quote quality signal.","examples":["providerQuote"]},"sourceDetail":{"description":"Provider-specific source or endpoint detail for the quality signal.","examples":["providerEndpoint"],"type":"string"},"tier":{"type":"string","enum":["liquid","thin"],"description":"Machine-readable quote quality tier for a successful quote.","examples":["liquid"]}},"required":["liquiditySource","tier"],"description":"Machine-readable liquidity, fee, and source signals for a successful quote."},"FundingQuoteDetails":{"type":"object","properties":{"expiresAt":{"description":"Timestamp after which the provider quote is no longer valid.","examples":["2026-01-01T00:01:00Z"],"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))$"},"sampledAt":{"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":"Timestamp for the live quote request.","examples":["2026-01-01T00:00:00Z"]}},"required":["sampledAt"],"description":"Freshness data for a provider funding quote."},"FundingQuote":{"type":"object","properties":{"destinationAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"Expected destination amount."},"destinationAmountMin":{"description":"Provider-derived minimum destination amount. Symbiosis and Squid quotes use a fixed 1% slippage tolerance.","type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"]},"destinationChain":{"$ref":"#/components/schemas/FundingChain"},"destinationToken":{"$ref":"#/components/schemas/FundingToken"},"id":{"type":"string","description":"Stable deterministic funding quote id.","examples":["base-usdc-tempo-usdce-relay"]},"provider":{"$ref":"#/components/schemas/FundingProvider"},"quality":{"$ref":"#/components/schemas/FundingQuoteQuality"},"quote":{"$ref":"#/components/schemas/FundingQuoteDetails"},"sourceAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"sourceChain":{"$ref":"#/components/schemas/FundingChain"},"sourceToken":{"$ref":"#/components/schemas/FundingToken"}},"required":["destinationAmount","destinationChain","destinationToken","id","provider","quality","quote","sourceAmount","sourceChain","sourceToken"],"description":"One successful provider-specific funding quote."},"FundingQuoteList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FundingQuote"},"description":"Successful live funding quotes."}},"required":["data"],"description":"A non-paginated list of successful live funding quotes."},"FundingChainInventory":{"type":"object","properties":{"addressFormat":{"type":"string","enum":["base58","base58check","hex"],"description":"Address encoding used by accounts and token identifiers on this chain.","examples":["hex"]},"id":{"type":"string","description":"CAIP-2 chain id.","examples":["eip155:8453"]},"kind":{"type":"string","enum":["evm","solana","tron"],"description":"Chain execution family used for provider routing.","examples":["evm"]},"name":{"type":"string","description":"Human-readable chain name.","examples":["Base"]},"tokens":{"type":"array","items":{"$ref":"#/components/schemas/FundingToken"},"description":"Stablecoins known on this source chain."}},"required":["addressFormat","id","kind","name","tokens"],"description":"One source chain and its known stablecoin inventory."},"FundingChainList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FundingChainInventory"},"description":"Source chains and stablecoins supported by funding quotes."}},"required":["data"],"description":"A non-paginated list of source chains and stablecoin inventory."},"FundingProviderList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FundingProvider"},"description":"Providers in Tempo's funding quote catalog."}},"required":["data"],"description":"A non-paginated list of funding quote providers."},"CreateFundingDepositAddressRequest":{"type":"object","properties":{"amount":{"type":"string","pattern":"^[1-9]\\d*$","description":"Amount in base units of the token the mode fixes.","examples":["1000000"]},"destinationToken":{"type":"string","minLength":1,"description":"Tempo destination token symbol, contract address, or token key.","examples":["usdt0"]},"recipient":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Tempo account that receives completed deposits.","examples":["0x1111111111111111111111111111111111111111"]},"refundAddress":{"type":"string","minLength":1,"description":"Source-chain account that receives refunds.","examples":["TJRabPrwbZy45sbavfcjinPJC18kjpRTv8"]},"sourceChain":{"type":"string","minLength":1,"description":"Source chain CAIP-2 id, slug, or alias.","examples":["tron","tron:0x2b6653dc"]},"sourceToken":{"type":"string","minLength":1,"description":"Source token symbol, contract address, or token key.","examples":["usdt"]},"subsidize":{"description":"Guarantees normalized 1:1 delivery through a Tempo-funded subsidy.","examples":[false],"type":"boolean"}},"required":["amount","destinationToken","recipient","refundAddress","sourceChain","sourceToken"],"additionalProperties":false,"description":"Reusable funding deposit address creation request."},"FundingTransferFee":{"type":"object","properties":{"amount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"side":{"type":"string","enum":["destination","source"],"description":"Which side of the transfer the fee is taken from.","examples":["destination"]},"token":{"$ref":"#/components/schemas/FundingToken"},"type":{"type":"string","enum":["provider"],"description":"What the fee pays for.","examples":["provider"]}},"required":["amount","side","token","type"],"description":"One fee applied to the transfer."},"CreatedFundingDepositAddress":{"type":"object","properties":{"address":{"type":"string","description":"Reusable source-chain deposit address.","examples":["TJRabPrwbZy45sbavfcjinPJC18kjpRTv8"]},"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 deposit address was created (ISO 8601).","examples":["2026-08-04T00:00:00.000Z"]},"destinationChain":{"$ref":"#/components/schemas/FundingChain"},"destinationToken":{"$ref":"#/components/schemas/FundingToken"},"id":{"type":"string","pattern":"^fda_[A-Za-z0-9_-]+$","description":"Funding deposit address id (`fda_…`).","examples":["fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx"]},"provider":{"$ref":"#/components/schemas/FundingProvider"},"recipient":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Tempo account that receives completed deposits.","examples":["0x1111111111111111111111111111111111111111"]},"refundAddress":{"type":"string","description":"Source-chain address that receives refunds.","examples":["TJRabPrwbZy45sbavfcjinPJC18kjpRTv8"]},"sourceChain":{"$ref":"#/components/schemas/FundingChain"},"sourceToken":{"$ref":"#/components/schemas/FundingToken"},"status":{"type":"string","enum":["action-required","active"],"description":"Whether the address can safely process new deposits.","examples":["active"]},"subsidize":{"type":"boolean","description":"Whether Tempo guarantees normalized 1:1 delivery.","examples":[false]},"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":"When the deposit address last materially changed (ISO 8601).","examples":["2026-08-04T00:00:00.000Z"]},"destinationAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"Expected destination amount."},"destinationAmountMin":{"description":"Provider-derived minimum destination amount. Symbiosis and Squid quotes use a fixed 1% slippage tolerance.","type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"]},"fees":{"type":"array","items":{"$ref":"#/components/schemas/FundingTransferFee"},"description":"Fees applied to the quoted deposit."},"quote":{"$ref":"#/components/schemas/FundingQuoteDetails"},"sourceAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."}},"required":["address","createdAt","destinationChain","destinationToken","id","provider","recipient","refundAddress","sourceChain","sourceToken","status","subsidize","updatedAt","destinationAmount","fees","quote","sourceAmount"],"description":"A reusable funding deposit address with current quoted delivery terms."},"FundingDepositAddress":{"type":"object","properties":{"address":{"type":"string","description":"Reusable source-chain deposit address.","examples":["TJRabPrwbZy45sbavfcjinPJC18kjpRTv8"]},"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 deposit address was created (ISO 8601).","examples":["2026-08-04T00:00:00.000Z"]},"destinationChain":{"$ref":"#/components/schemas/FundingChain"},"destinationToken":{"$ref":"#/components/schemas/FundingToken"},"id":{"type":"string","pattern":"^fda_[A-Za-z0-9_-]+$","description":"Funding deposit address id (`fda_…`).","examples":["fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx"]},"provider":{"$ref":"#/components/schemas/FundingProvider"},"recipient":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Tempo account that receives completed deposits.","examples":["0x1111111111111111111111111111111111111111"]},"refundAddress":{"type":"string","description":"Source-chain address that receives refunds.","examples":["TJRabPrwbZy45sbavfcjinPJC18kjpRTv8"]},"sourceChain":{"$ref":"#/components/schemas/FundingChain"},"sourceToken":{"$ref":"#/components/schemas/FundingToken"},"status":{"type":"string","enum":["action-required","active"],"description":"Whether the address can safely process new deposits.","examples":["active"]},"subsidize":{"type":"boolean","description":"Whether Tempo guarantees normalized 1:1 delivery.","examples":[false]},"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":"When the deposit address last materially changed (ISO 8601).","examples":["2026-08-04T00:00:00.000Z"]}},"required":["address","createdAt","destinationChain","destinationToken","id","provider","recipient","refundAddress","sourceChain","sourceToken","status","subsidize","updatedAt"],"description":"One reusable address for funding a Tempo account."},"CreateFundingDepositAddressResponse":{"anyOf":[{"$ref":"#/components/schemas/CreatedFundingDepositAddress"},{"$ref":"#/components/schemas/FundingDepositAddress"}],"description":"A reusable funding deposit address, including terms sampled for a newly stored provider address."},"ApiKeyMalformedOrBodyInvalidOrIdempotencyKeyRequiredError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","body_invalid","idempotency_key_required"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"DepositAddressNotAvailableError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["deposit_address_not_available"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"IdempotencyConflictOrIdempotencyInProgressError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["idempotency_conflict","idempotency_in_progress"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"FundingDepositAddressList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FundingDepositAddress"},"description":"Funding deposit addresses on this page, newest first."},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of reusable funding deposit addresses."},"FundingDepositAddressNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["funding_deposit_address_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"FundingDepositAddressNotActiveError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["funding_deposit_address_not_active"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"NotImplemented501Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["not_implemented"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"FundingDepositStatusReason":{"type":"object","properties":{"code":{"type":"string","enum":["delivery_failed","delivery_liquidity_unavailable","manual_recovery_required","refund_failed","source_amount_not_supported","source_token_mismatch","subsidy_balance_unavailable","subsidy_failed"],"description":"Stable machine-readable reason code.","examples":["delivery_liquidity_unavailable"]},"message":{"type":"string","description":"Human-readable explanation of the current status.","examples":["The required destination amount is not currently available."]}},"required":["code","message"],"description":"Why a deposit needs attention or recovery."},"FundingDeposit":{"type":"object","properties":{"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 deposit was first detected (ISO 8601).","examples":["2026-08-04T00:01:00.000Z"]},"depositAddressId":{"type":"string","pattern":"^fda_[A-Za-z0-9_-]+$","description":"Funding deposit address that detected the transfer.","examples":["fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx"]},"detectionTrigger":{"type":"string","enum":["chain","manual","poll","webhook"],"description":"How the deposit was first detected.","examples":["webhook"]},"destinationAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"destinationAmountRequired":{"description":"Destination amount required for completion, when known.","type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"]},"destinationChain":{"$ref":"#/components/schemas/FundingChain"},"destinationToken":{"$ref":"#/components/schemas/FundingToken"},"destinationTransactionHashes":{"readOnly":true,"description":"Verified destination transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]],"type":"array","items":{"type":"string"}},"id":{"type":"string","pattern":"^fdp_[A-Za-z0-9_-]+$","description":"Funding deposit id (`fdp_…`).","examples":["fdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx"]},"provider":{"$ref":"#/components/schemas/FundingProvider"},"recipient":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Tempo account that receives the completed deposit.","examples":["0x1111111111111111111111111111111111111111"]},"refundAddress":{"type":"string","description":"Source-chain address that receives a refund.","examples":["TJRabPrwbZy45sbavfcjinPJC18kjpRTv8"]},"refundAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"refundTransactionHashes":{"readOnly":true,"description":"Verified source-chain refund transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]],"type":"array","items":{"type":"string"}},"sender":{"description":"Observed source-chain sender, when available.","examples":["TJRabPrwbZy45sbavfcjinPJC18kjpRTv8"],"type":"string"},"sourceAmount":{"description":"Verified source amount, when source evidence is available.","type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"]},"sourceChain":{"$ref":"#/components/schemas/FundingChain"},"sourceToken":{"$ref":"#/components/schemas/FundingToken"},"sourceTransactionHashes":{"readOnly":true,"description":"Provider-observed source transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]],"type":"array","items":{"type":"string"}},"sourceTransferIndex":{"description":"Verified transfer position within the source transaction.","examples":[0],"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["action-required","bridging","completed","detected","refunded","refunding","settling"],"description":"Current delivery status of the deposit.","examples":["detected"]},"statusReason":{"$ref":"#/components/schemas/FundingDepositStatusReason"},"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":"When the deposit last materially changed (ISO 8601).","examples":["2026-08-04T00:02:00.000Z"]}},"required":["createdAt","depositAddressId","destinationChain","destinationToken","id","provider","recipient","refundAddress","sourceChain","sourceToken","sourceTransactionHashes","status","updatedAt"],"description":"One detected deposit and its delivery status."},"FundingDepositList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FundingDeposit"},"description":"Detected deposits on this page, newest first."},"meta":{"description":"Extra response metadata requested with `include`.","type":"object","properties":{"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]}},"required":["totalCountCapped","totalCount"]},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of visible funding deposits."},"FundingDepositNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["funding_deposit_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"FundingTransferQuote":{"type":"object","properties":{"expiresAt":{"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 quoted terms stop being executable (ISO 8601).","examples":["2026-07-30T04:01:00.000Z"]},"sampledAt":{"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 provider produced the quote (ISO 8601).","examples":["2026-07-30T04:00:00.000Z"]}},"required":["expiresAt","sampledAt"],"description":"Freshness and validity window of the selected quote."},"FundingTransferStatusReason":{"type":"object","properties":{"code":{"type":"string","enum":["destination_amount_below_minimum","destination_recovered","manual_recovery_required","refund_failed","source_amount_above_maximum","source_amount_below_minimum","source_chain_mismatch","source_token_mismatch"],"description":"Stable machine-readable reason code.","examples":["destination_amount_below_minimum"]},"message":{"type":"string","description":"Human-readable explanation of the reason.","examples":["The verified destination amount did not satisfy the quoted minimum."]}},"required":["code","message"],"description":"Why the transfer is in its current status, when context is needed."},"FundingTransfer":{"type":"object","properties":{"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 transfer was created (ISO 8601).","examples":["2026-07-30T04:00:00.000Z"]},"destinationAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"destinationAmountMin":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"destinationChain":{"$ref":"#/components/schemas/FundingChain"},"destinationToken":{"$ref":"#/components/schemas/FundingToken"},"destinationTransactionHashes":{"type":"array","items":{"type":"string"},"description":"Verified destination transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]]},"fees":{"type":"array","items":{"$ref":"#/components/schemas/FundingTransferFee"},"description":"Fees applied to the transfer."},"id":{"type":"string","description":"Funding transfer id (`ftr_…`, lexically time-ordered).","examples":["ftr_001785729600000_2ZPE2gvateYEQ0dQslgvkhjx"]},"method":{"type":"string","enum":["depositAddress","transaction"],"description":"How the caller funds the transfer.","examples":["transaction"]},"mode":{"type":"string","enum":["exactDestination","exactSource"],"description":"Which side of the transfer the quoted amount fixes.","examples":["exactSource"]},"provider":{"$ref":"#/components/schemas/FundingProvider"},"quote":{"$ref":"#/components/schemas/FundingTransferQuote"},"recipient":{"type":"string","description":"Final beneficiary of the transfer.","examples":["0x1111111111111111111111111111111111111111"]},"refundAddress":{"type":"string","description":"Source-chain refund recipient (deposit-address method).","examples":["0x2222222222222222222222222222222222222222"]},"refundAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"refundTransactionHashes":{"type":"array","items":{"type":"string"},"description":"Verified refund transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]]},"sender":{"type":"string","description":"Source-chain account that signs the funding action (transaction method).","examples":["0x2222222222222222222222222222222222222222"]},"sourceAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"sourceAmountMax":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"sourceChain":{"$ref":"#/components/schemas/FundingChain"},"sourceToken":{"$ref":"#/components/schemas/FundingToken"},"sourceTransactionHashes":{"type":"array","items":{"type":"string"},"description":"Verified source transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]]},"status":{"type":"string","enum":["awaiting-source","processing","refunding","completed","refunded","action-required","expired"],"description":"Lifecycle status of the funding transfer.","examples":["awaiting-source"]},"statusReason":{"$ref":"#/components/schemas/FundingTransferStatusReason"},"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":"When the transfer last materially changed (ISO 8601).","examples":["2026-07-30T04:00:20.000Z"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Monotonic revision that increments whenever the transfer materially changes.","examples":[1]}},"required":["createdAt","destinationChain","destinationToken","fees","id","method","mode","provider","quote","recipient","sourceAmount","sourceChain","sourceToken","status","updatedAt","version"],"description":"One durable funding transfer."},"FundingTransferList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FundingTransfer"},"description":"Funding transfers on this page, newest first."},"meta":{"description":"Extra response metadata requested with `include`.","type":"object","properties":{"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]}},"required":["totalCountCapped","totalCount"]},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of funding transfers."},"FundingTransferNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["funding_transfer_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"RegisterFundingTransferSourceTransactionRequest":{"anyOf":[{"type":"object","properties":{"transactionHash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x5151515151515151515151515151515151515151515151515151515151515151"]}},"required":["transactionHash"],"additionalProperties":false},{"type":"object","properties":{"transactionHashes":{"minItems":1,"maxItems":10,"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x5252525252525252525252525252525252525252525252525252525252525252"]},"description":"Source transactions produced by the prepared calls."}},"required":["transactionHashes"],"additionalProperties":false}],"description":"Source transactions to verify and register for the transfer."},"ApiKeyMalformedOrBodyInvalidOrParamInvalidOrSourceTransactionInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","body_invalid","param_invalid","source_transaction_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"FundingTransferNotAwaitingSourceOrSourceTransactionConflictOrSourceTransactionPendingError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["funding_transfer_not_awaiting_source","source_transaction_conflict","source_transaction_pending"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"CreateFundingTransferRequest":{"type":"object","properties":{"amount":{"type":"string","pattern":"^[1-9]\\d*$","description":"Amount in base units of the token the mode fixes.","examples":["1000000"]},"destinationToken":{"type":"string","minLength":1,"description":"Tempo destination token symbol, contract address, or token key.","examples":["pathusd"]},"mode":{"type":"string","enum":["exactDestination","exactSource"],"description":"Which side of the transfer the quoted amount fixes.","examples":["exactSource"]},"provider":{"description":"Funding provider ID. Omit to select the best available provider.","examples":["relay"],"type":"string","minLength":1},"recipient":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Final beneficiary of the transfer.","examples":["0x1111111111111111111111111111111111111111"]},"sender":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Source-chain account that signs the funding action.","examples":["0x2222222222222222222222222222222222222222"]},"slippageBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Maximum acceptable slippage in basis points.","examples":[50]},"sourceChain":{"type":"string","description":"Source chain CAIP-2 id, slug, or alias.","examples":["base","eip155:8453"]},"sourceToken":{"type":"string","minLength":1,"description":"Source token symbol, contract address, or token key.","examples":["usdc"]}},"required":["amount","destinationToken","mode","recipient","sender","sourceChain","sourceToken"],"additionalProperties":false,"description":"Funding transfer creation request."},"FundingActionCall":{"type":"object","properties":{"data":{"type":"string","pattern":"^0x(?:[0-9a-fA-F]{2})*$","description":"ABI-encoded calldata.","examples":["0x095ea7b3"]},"to":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Contract the call targets.","examples":["0x4444444444444444444444444444444444444444"]},"value":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Native value to send, as hex.","examples":["0x0"]}},"required":["data","to","value"],"description":"One unsigned EVM call."},"FundingEvmCallsAction":{"type":"object","properties":{"calls":{"minItems":1,"type":"array","items":{"$ref":"#/components/schemas/FundingActionCall"},"description":"Calls in submission order; they may require separate transactions."},"type":{"type":"string","const":"evm:calls","description":"Action kind."}},"required":["calls","type"],"description":"Ordered unsigned EVM calls to sign and submit on the source chain."},"FundingAction":{"oneOf":[{"$ref":"#/components/schemas/FundingEvmCallsAction"}],"description":"Executable source-chain action. Never returned by transfer reads."},"CreatedFundingTransfer":{"type":"object","properties":{"action":{"$ref":"#/components/schemas/FundingAction"},"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 transfer was created (ISO 8601).","examples":["2026-07-30T04:00:00.000Z"]},"destinationAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"destinationAmountMin":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"destinationChain":{"$ref":"#/components/schemas/FundingChain"},"destinationToken":{"$ref":"#/components/schemas/FundingToken"},"destinationTransactionHashes":{"type":"array","items":{"type":"string"},"description":"Verified destination transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]]},"fees":{"type":"array","items":{"$ref":"#/components/schemas/FundingTransferFee"},"description":"Fees applied to the transfer."},"id":{"type":"string","description":"Funding transfer id (`ftr_…`, lexically time-ordered).","examples":["ftr_001785729600000_2ZPE2gvateYEQ0dQslgvkhjx"]},"method":{"type":"string","enum":["depositAddress","transaction"],"description":"How the caller funds the transfer.","examples":["transaction"]},"mode":{"type":"string","enum":["exactDestination","exactSource"],"description":"Which side of the transfer the quoted amount fixes.","examples":["exactSource"]},"provider":{"$ref":"#/components/schemas/FundingProvider"},"quote":{"$ref":"#/components/schemas/FundingTransferQuote"},"recipient":{"type":"string","description":"Final beneficiary of the transfer.","examples":["0x1111111111111111111111111111111111111111"]},"refundAddress":{"type":"string","description":"Source-chain refund recipient (deposit-address method).","examples":["0x2222222222222222222222222222222222222222"]},"refundAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"refundTransactionHashes":{"type":"array","items":{"type":"string"},"description":"Verified refund transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]]},"sender":{"type":"string","description":"Source-chain account that signs the funding action (transaction method).","examples":["0x2222222222222222222222222222222222222222"]},"sourceAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"sourceAmountMax":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"A token quantity with its denomination and decimal representation."},"sourceChain":{"$ref":"#/components/schemas/FundingChain"},"sourceToken":{"$ref":"#/components/schemas/FundingToken"},"sourceTransactionHashes":{"type":"array","items":{"type":"string"},"description":"Verified source transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]]},"status":{"type":"string","enum":["awaiting-source","processing","refunding","completed","refunded","action-required","expired"],"description":"Lifecycle status of the funding transfer.","examples":["awaiting-source"]},"statusReason":{"$ref":"#/components/schemas/FundingTransferStatusReason"},"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":"When the transfer last materially changed (ISO 8601).","examples":["2026-07-30T04:00:20.000Z"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Monotonic revision that increments whenever the transfer materially changes.","examples":[1]}},"required":["action","createdAt","destinationChain","destinationToken","fees","id","method","mode","provider","quote","recipient","sourceAmount","sourceChain","sourceToken","status","updatedAt","version"],"description":"The created funding transfer, including its one-time executable action."},"CreateFundingTransferVaultRequest":{"type":"object","properties":{"amount":{"type":"string","pattern":"^[1-9]\\d*$","description":"Amount in base units of the token the mode fixes.","examples":["1000000"]},"mode":{"type":"string","enum":["exactDestination","exactSource"],"description":"Which side of the transfer the quoted amount fixes.","examples":["exactSource"]},"recipient":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Final beneficiary of the transfer.","examples":["0x1111111111111111111111111111111111111111"]},"sender":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Source-chain account that signs the funding action.","examples":["0x2222222222222222222222222222222222222222"]},"slippageBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Maximum acceptable slippage in basis points.","examples":[50]},"sourceChain":{"type":"string","description":"Source chain CAIP-2 id, slug, or alias.","examples":["base","eip155:8453"]},"sourceToken":{"type":"string","minLength":1,"description":"Source token symbol, contract address, or token key.","examples":["usdc"]},"vaultAddress":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Tempo Earn vault contract address.","examples":["0xf4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4f4"]}},"required":["amount","mode","recipient","sender","sourceChain","sourceToken","vaultAddress"],"additionalProperties":false,"description":"Vault funding transfer creation request."},"CreateFundingTransferZoneRequest":{"type":"object","properties":{"amount":{"type":"string","pattern":"^[1-9]\\d*$","description":"Amount in base units of the token the mode fixes.","examples":["1000000"]},"destinationChain":{"type":"string","pattern":"^eip155:\\d+$","description":"Configured Zone CAIP-2 id.","examples":["eip155:1424310003"]},"destinationToken":{"type":"string","minLength":1,"description":"Tempo destination token symbol, contract address, or token key.","examples":["pathusd"]},"mode":{"type":"string","enum":["exactDestination","exactSource"],"description":"Which side of the transfer the quoted amount fixes.","examples":["exactSource"]},"recipient":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Final beneficiary of the transfer.","examples":["0x1111111111111111111111111111111111111111"]},"recipientFallback":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Public Tempo recipient used if the Zone credit cannot complete.","examples":["0x2222222222222222222222222222222222222222"]},"sender":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Source-chain account that signs the funding action.","examples":["0x2222222222222222222222222222222222222222"]},"slippageBps":{"type":"integer","minimum":0,"maximum":10000,"description":"Maximum acceptable slippage in basis points.","examples":[50]},"sourceChain":{"type":"string","description":"Source chain CAIP-2 id, slug, or alias.","examples":["base","eip155:8453"]},"sourceToken":{"type":"string","minLength":1,"description":"Source token symbol, contract address, or token key.","examples":["usdc"]}},"required":["amount","destinationChain","destinationToken","mode","recipient","recipientFallback","sender","sourceChain","sourceToken"],"additionalProperties":false,"description":"Zone funding transfer creation request."},"CreateApiKeyRequest":{"type":"object","properties":{"allowedIps":{"description":"Client IP addresses and CIDR ranges allowed to use the key. Omit or use an empty list for unrestricted access.","examples":[["203.0.113.0/24"]],"readOnly":true,"type":"array","items":{"type":"string","maxLength":64,"description":"An exact IPv4/IPv6 address or CIDR range."}},"environment":{"default":"production","description":"Key environment.","examples":["sandbox"],"type":"string","enum":["production","sandbox"]},"name":{"description":"Human-readable key name.","examples":["CI"],"type":"string","minLength":1,"maxLength":100},"scopes":{"default":[],"description":"Scopes to grant.","examples":[["data:read"]],"type":"array","items":{"type":"string","minLength":1}}},"description":"Fields for minting an API key."},"CreateApiKeyResponse":{"type":"object","properties":{"allowedIps":{"readOnly":true,"description":"Client IP addresses and CIDR ranges allowed to use this key. An empty list means unrestricted.","examples":[["203.0.113.0/24","2001:db8::1"]],"type":"array","items":{"type":"string","maxLength":64,"description":"An exact IPv4/IPv6 address or CIDR range."}},"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 key was minted (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"createdBy":{"description":"Identity that minted the key (`usr_…`, or `super_admin`).","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"],"type":"string"},"environment":{"type":"string","enum":["production","sandbox"],"description":"Key environment.","examples":["sandbox"]},"expiresAt":{"description":"When the key expires (ISO 8601). Absent for a non-expiring key.","examples":["2027-01-01T00:00:00.000Z"],"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))$"},"id":{"type":"string","description":"Opaque key id (`key_…`).","examples":["key_1a2b3c4d5e6f7g8h9j0k1m2n"]},"lastUsedAt":{"description":"When the key last authenticated a request (ISO 8601).","examples":["2026-07-21T12:34:56.000Z"],"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))$"},"name":{"description":"Human-readable key name.","examples":["CI"],"type":"string"},"orgId":{"type":"string","description":"Owning organization id (`org_…`).","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"projectId":{"description":"Attributed project id (`prj_…`).","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"],"type":"string"},"scopes":{"type":"array","items":{"type":"string","minLength":1},"description":"Granted scopes. '*' and non-self-serve scopes appear only on keys minted by the super admin.","examples":[["data:read"]]},"tokenLast4":{"type":"string","description":"Last 4 characters of the plaintext token.","examples":["a1b2"]},"token":{"type":"string","description":"The plaintext token — shown once, unrecoverable afterward.","examples":["tempo_sandbox:sk:…"]}},"required":["allowedIps","createdAt","environment","id","orgId","scopes","tokenLast4","token"],"description":"The minted key, including its one-time token."},"ApiKeyMalformedOrBodyInvalidOrParamInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","body_invalid","param_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ApiKeyForbiddenOrApiKeyIpForbiddenOrForbiddenOrScopeNotIssuableError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_forbidden","api_key_ip_forbidden","forbidden","scope_not_issuable"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ApiKeysNotEnabledOrOrganizationNotFoundOrProjectNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_keys_not_enabled","organization_not_found","project_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"ApiKey":{"type":"object","properties":{"allowedIps":{"readOnly":true,"description":"Client IP addresses and CIDR ranges allowed to use this key. An empty list means unrestricted.","examples":[["203.0.113.0/24","2001:db8::1"]],"type":"array","items":{"type":"string","maxLength":64,"description":"An exact IPv4/IPv6 address or CIDR range."}},"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 key was minted (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"createdBy":{"description":"Identity that minted the key (`usr_…`, or `super_admin`).","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"],"type":"string"},"environment":{"type":"string","enum":["production","sandbox"],"description":"Key environment.","examples":["sandbox"]},"expiresAt":{"description":"When the key expires (ISO 8601). Absent for a non-expiring key.","examples":["2027-01-01T00:00:00.000Z"],"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))$"},"id":{"type":"string","description":"Opaque key id (`key_…`).","examples":["key_1a2b3c4d5e6f7g8h9j0k1m2n"]},"lastUsedAt":{"description":"When the key last authenticated a request (ISO 8601).","examples":["2026-07-21T12:34:56.000Z"],"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))$"},"name":{"description":"Human-readable key name.","examples":["CI"],"type":"string"},"orgId":{"type":"string","description":"Owning organization id (`org_…`).","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"projectId":{"description":"Attributed project id (`prj_…`).","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"],"type":"string"},"scopes":{"type":"array","items":{"type":"string","minLength":1},"description":"Granted scopes. '*' and non-self-serve scopes appear only on keys minted by the super admin.","examples":[["data:read"]]},"tokenLast4":{"type":"string","description":"Last 4 characters of the plaintext token.","examples":["a1b2"]}},"required":["allowedIps","createdAt","environment","id","orgId","scopes","tokenLast4"],"description":"An API key: metadata only — the token appears once, at mint."},"ApiKeyList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ApiKey"},"description":"The API keys, newest first."}},"required":["data"],"description":"A non-paginated list of API key metadata."},"ApiKeysNotEnabledOrOrganizationNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_keys_not_enabled","organization_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"RotateApiKeyResponse":{"type":"object","properties":{"allowedIps":{"readOnly":true,"description":"Client IP addresses and CIDR ranges allowed to use this key. An empty list means unrestricted.","examples":[["203.0.113.0/24","2001:db8::1"]],"type":"array","items":{"type":"string","maxLength":64,"description":"An exact IPv4/IPv6 address or CIDR range."}},"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 key was minted (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"createdBy":{"description":"Identity that minted the key (`usr_…`, or `super_admin`).","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"],"type":"string"},"environment":{"type":"string","enum":["production","sandbox"],"description":"Key environment.","examples":["sandbox"]},"expiresAt":{"description":"When the key expires (ISO 8601). Absent for a non-expiring key.","examples":["2027-01-01T00:00:00.000Z"],"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))$"},"id":{"type":"string","description":"Opaque key id (`key_…`).","examples":["key_1a2b3c4d5e6f7g8h9j0k1m2n"]},"lastUsedAt":{"description":"When the key last authenticated a request (ISO 8601).","examples":["2026-07-21T12:34:56.000Z"],"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))$"},"name":{"description":"Human-readable key name.","examples":["CI"],"type":"string"},"orgId":{"type":"string","description":"Owning organization id (`org_…`).","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"projectId":{"description":"Attributed project id (`prj_…`).","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"],"type":"string"},"scopes":{"type":"array","items":{"type":"string","minLength":1},"description":"Granted scopes. '*' and non-self-serve scopes appear only on keys minted by the super admin.","examples":[["data:read"]]},"tokenLast4":{"type":"string","description":"Last 4 characters of the plaintext token.","examples":["a1b2"]},"token":{"type":"string","description":"The plaintext token — shown once, unrecoverable afterward.","examples":["tempo_sandbox:sk:…"]}},"required":["allowedIps","createdAt","environment","id","orgId","scopes","tokenLast4","token"],"description":"The replacement key, including its one-time token."},"ApiKeyNotFoundOrApiKeysNotEnabledOrOrganizationNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_not_found","api_keys_not_enabled","organization_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"RevokeApiKeyResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the key that was revoked.","examples":["key_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["id"],"description":"Confirmation that the key was revoked."},"UpdateApiKeyRequest":{"type":"object","properties":{"allowedIps":{"readOnly":true,"description":"Replacement client IP/CIDR allowlist. Use an empty list for unrestricted access.","examples":[["203.0.113.0/24"]],"type":"array","items":{"type":"string","maxLength":64,"description":"An exact IPv4/IPv6 address or CIDR range."}}},"required":["allowedIps"],"description":"Fields for updating an API key's network access."},"ApiKeyNotFoundOrApiKeysNotEnabledOrOrganizationNotFoundOrProjectNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_not_found","api_keys_not_enabled","organization_not_found","project_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"BillingSpendLimit":{"description":"Configured spend limit; absent when the organization has none.","examples":[{"amount":"250","currency":"usd","period":"month"}],"type":"object","properties":{"amount":{"type":"string","pattern":"^(?!0+(\\.0+)?$)\\d{1,9}(\\.\\d{1,2})?$","description":"Limit as a positive decimal string in `currency` units.","examples":["250"]},"currency":{"default":"usd","description":"Currency the limit is denominated in; `usd` only today.","examples":["usd"],"type":"string","enum":["usd"]},"period":{"default":"month","description":"Window the limit applies over; `month` (UTC calendar) only today.","examples":["month"],"type":"string","enum":["month"]}},"required":["amount"]},"BillingTransactionFeeLimit":{"description":"Configured per-transaction fee cap; absent when the platform default applies.","examples":[{"amount":"0.50","currency":"usd"}],"type":"object","properties":{"amount":{"type":"string","pattern":"^(?!0+(\\.0+)?$)\\d{1,9}(\\.\\d{1,2})?$","description":"Cap as a positive decimal string in `currency` units.","examples":["0.50"]},"currency":{"default":"usd","description":"Currency the cap is denominated in; `usd` only today.","examples":["usd"],"type":"string","enum":["usd"]}},"required":["amount"]},"Billing":{"type":"object","properties":{"enabledSources":{"type":"array","items":{"type":"string","enum":["stripe","tempo"]},"description":"Billing sources this organization may set up.","examples":[["stripe"]]},"spend":{"description":"Billable production spend committed in the current window.","examples":[{"amount":"12.34","currency":"usd","period":"month"}],"type":"object","properties":{"amount":{"type":"string","description":"Committed spend as a decimal string: finalized fees plus in-flight fee caps.","examples":["12.34"]},"currency":{"type":"string","enum":["usd"],"description":"Currency of the spend figure.","examples":["usd"]},"period":{"type":"string","enum":["month"],"description":"Window the figure covers.","examples":["month"]}},"required":["amount","currency","period"]},"spendLimit":{"$ref":"#/components/schemas/BillingSpendLimit"},"status":{"type":"string","enum":["active","canceled","none","past_due"],"description":"Billing status derived from the organization's billing source; `active` opens production fee sponsorship.","examples":["active"]},"txFeeLimit":{"$ref":"#/components/schemas/BillingTransactionFeeLimit"},"updatedAt":{"description":"When the billing status last changed (ISO 8601); absent before first checkout.","examples":["2026-01-01T00:00:00.000Z"],"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))$"}},"required":["enabledSources","status"],"description":"An organization's billing state."},"OrganizationNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["organization_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"UpdateBillingRequest":{"type":"object","properties":{"spendLimit":{"description":"Spend limit per period; absent leaves it unchanged, null removes it.","examples":[{"amount":"250","currency":"usd","period":"month"}],"anyOf":[{"$ref":"#/components/schemas/BillingSpendLimit"},{"type":"null"}]},"txFeeLimit":{"description":"Per-transaction fee cap; absent leaves it unchanged, null restores the platform default.","examples":[{"amount":"0.50","currency":"usd"}],"anyOf":[{"$ref":"#/components/schemas/BillingTransactionFeeLimit"},{"type":"null"}]}},"description":"Billing settings to apply."},"ApiKeyMalformedOrBodyInvalidOrParamInvalidOrQueryInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","body_invalid","param_invalid","query_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"BillingSession":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Hosted Stripe session URL; navigate the browser here.","examples":["https://checkout.stripe.com/c/pay/cs_test_a1b2c3"]}},"required":["url"],"description":"A hosted Stripe session link."},"ApiKeyForbiddenOrApiKeyIpForbiddenOrBillingSourceDisabledOrForbiddenError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_forbidden","api_key_ip_forbidden","billing_source_disabled","forbidden"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"NotImplementedError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["billing_unconfigured"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"BillingNotFoundOrOrganizationNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["billing_not_found","organization_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"BillingPaymentMethod":{"type":"object","properties":{"card":{"description":"Card details; present when `type` is `card`.","examples":[{"brand":"visa","expMonth":12,"expYear":2030,"last4":"4242"}],"type":"object","properties":{"brand":{"type":"string","description":"Card brand (e.g. `visa`).","examples":["visa"]},"expMonth":{"type":"number","description":"Expiry month (1-12).","examples":[12]},"expYear":{"type":"number","description":"Expiry year.","examples":[2030]},"last4":{"type":"string","description":"Last four digits.","examples":["4242"]}},"required":["brand","expMonth","expYear","last4"]},"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 method was attached (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"default":{"type":"boolean","description":"Whether invoices charge this method.","examples":[true]},"id":{"type":"string","description":"The payment method id (`pm_…`).","examples":["pm_1NVChw2eZvKYlo2CHxiM5E2N"]},"provider":{"type":"string","const":"stripe","description":"Payment provider; `stripe` only today.","examples":["stripe"]},"type":{"type":"string","description":"Method type (e.g. `card`, `us_bank_account`).","examples":["card"]}},"required":["createdAt","default","id","provider","type"],"description":"A payment method on file."},"BillingPaymentMethodList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BillingPaymentMethod"},"description":"Payment methods on file, newest first.","examples":[[]]}},"required":["data"],"description":"An organization's payment methods."},"BillingNotFoundOrOrganizationNotFoundOrPaymentMethodNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["billing_not_found","organization_not_found","payment_method_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"FundTestnetAccountRequest":{"type":"object","properties":{"address":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]}},"required":["address"],"description":"A Tempo testnet account to fund."},"FaucetToken":{"type":"object","properties":{"address":{"description":"The test token contract that minted funds.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"currency":{"type":"string","description":"The token’s currency label.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The decimal places used by the token.","examples":[6]},"name":{"type":"string","description":"The token’s human-readable name.","examples":["Test USD"]},"symbol":{"type":"string","description":"The token’s symbol.","examples":["TUSD"]}},"required":["address","currency","decimals","name","symbol"],"description":"A test token minted by the faucet."},"FaucetFundedToken":{"type":"object","properties":{"amount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"description":"Amount minted by the faucet.","examples":[{"baseUnits":"1000000000","currency":"USD","decimals":6,"formatted":"1000"}]},"token":{"$ref":"#/components/schemas/FaucetToken"},"transactionHash":{"description":"The transaction that minted this token.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["amount","token","transactionHash"],"description":"One token amount minted by the faucet."},"FundTestnetAccountResponse":{"type":"object","properties":{"tokens":{"type":"array","items":{"$ref":"#/components/schemas/FaucetFundedToken"},"description":"The configured test tokens minted to the account.","examples":[[]]},"transactionHashes":{"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"description":"Transactions that minted the configured test tokens.","examples":[[]]}},"required":["tokens","transactionHashes"],"description":"Test tokens minted while funding the account."},"RateLimitExceededError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["rate_limit_exceeded"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"CreateInvitationRequest":{"type":"object","properties":{"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Invitee email.","examples":["dev@example.com"]},"role":{"type":"string","enum":["member","admin","owner"],"description":"Role granted when the invitation is accepted.","examples":["member"]}},"required":["email","role"],"description":"Fields for creating an invitation."},"Invitation":{"type":"object","properties":{"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 invitation was created (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Invitee email (lowercase).","examples":["dev@example.com"]},"expiresAt":{"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 invitation expires (ISO 8601).","examples":["2026-01-08T00:00:00.000Z"]},"id":{"type":"string","description":"Opaque invitation id (`inv_…`).","examples":["inv_1a2b3c4d5e6f7g8h9j0k1m2n"]},"invitedBy":{"type":"string","description":"User or API key id that created the invitation.","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"]},"orgId":{"type":"string","description":"Organization id (`org_…`) the invitation joins.","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"role":{"type":"string","enum":["member","admin","owner"],"description":"Role granted when the invitation is accepted.","examples":["member"]}},"required":["createdAt","email","expiresAt","id","invitedBy","orgId","role"],"description":"One pending invitation."},"InvitationList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Invitation"},"description":"Pending invitations, newest first.","examples":[[]]}},"required":["data"],"description":"A non-paginated list of pending invitations."},"RevokeInvitationResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the invitation that was revoked.","examples":["inv_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["id"],"description":"Confirmation that the invitation was revoked."},"InvitationNotFoundOrOrganizationNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invitation_not_found","organization_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"MyInvitation":{"type":"object","properties":{"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 invitation was created (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Invitee email (lowercase).","examples":["dev@example.com"]},"expiresAt":{"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 invitation expires (ISO 8601).","examples":["2026-01-08T00:00:00.000Z"]},"id":{"type":"string","description":"Opaque invitation id (`inv_…`).","examples":["inv_1a2b3c4d5e6f7g8h9j0k1m2n"]},"invitedBy":{"type":"string","description":"User or API key id that created the invitation.","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"]},"orgId":{"type":"string","description":"Organization id (`org_…`) the invitation joins.","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"role":{"type":"string","enum":["member","admin","owner"],"description":"Role granted when the invitation is accepted.","examples":["member"]},"orgName":{"type":"string","description":"Human-readable name of the inviting organization.","examples":["Acme, Inc."]}},"required":["createdAt","email","expiresAt","id","invitedBy","orgId","role","orgName"],"description":"One pending invitation addressed to the caller, with the inviting organization's name."},"MyInvitationList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MyInvitation"},"description":"Pending invitations, newest first.","examples":[[]]}},"required":["data"],"description":"A non-paginated list of the caller's pending invitations."},"AcceptInvitationResponse":{"type":"object","properties":{"orgId":{"type":"string","description":"Organization id (`org_…`) joined.","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"role":{"type":"string","enum":["member","admin","owner"],"description":"Granted role.","examples":["member"]},"userId":{"type":"string","description":"Member user id (`usr_…`).","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["orgId","role","userId"],"description":"The membership granted by accepting."},"InvitationNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invitation_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"DeclineInvitationResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the invitation that was declined.","examples":["inv_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["id"],"description":"Confirmation that the invitation was declined."},"CreateInviteLinkRequest":{"type":"object","properties":{"allowedEmailDomains":{"anyOf":[{"readOnly":true,"minItems":1,"type":"array","items":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$"}},{"type":"null"}],"description":"Email domains allowed to redeem, or null for unrestricted.","examples":[["example.org"],null]},"expiresAt":{"anyOf":[{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}],"description":"When the link expires (ISO 8601), or null for no expiry.","examples":["2026-01-08T00:00:00.000Z",null]},"maxUses":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum memberships the link may create, or null for unlimited.","examples":[25,null]},"name":{"type":"string","minLength":1,"maxLength":100,"description":"Human-readable link name.","examples":["Community"]},"role":{"default":"member","description":"Role granted by the link.","examples":["member"],"type":"string","const":"member"}},"description":"Fields for creating an invite link."},"InviteLink":{"type":"object","properties":{"allowedEmailDomains":{"anyOf":[{"readOnly":true,"minItems":1,"type":"array","items":{"type":"string","pattern":"^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)+$"}},{"type":"null"}],"description":"Email domains allowed to redeem, or null for unrestricted.","examples":[["example.org"],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 link was created (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"createdBy":{"type":"string","description":"User id that created the link.","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"]},"enabled":{"type":"boolean","description":"Whether the link is enabled.","examples":[true]},"expiresAt":{"anyOf":[{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}],"description":"When the link expires (ISO 8601), or null for no expiry.","examples":["2026-01-08T00:00:00.000Z",null]},"id":{"type":"string","description":"Opaque invite-link resource id (`iln_…`).","examples":["iln_1a2b3c4d5e6f7g8h9j0k1m2n"]},"lastUsedAt":{"anyOf":[{"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))$"},{"type":"null"}],"description":"When the link last created a membership, or null.","examples":["2026-01-02T00:00:00.000Z",null]},"maxUses":{"anyOf":[{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"Maximum memberships the link may create, or null for unlimited.","examples":[25,null]},"name":{"type":"string","description":"Human-readable link name.","examples":["Community"]},"orgId":{"type":"string","description":"Organization id (`org_…`) the link joins.","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"role":{"type":"string","const":"member","description":"Role granted by the link.","examples":["member"]},"status":{"type":"string","enum":["active","deleted","disabled","exhausted","expired"],"description":"Current link availability.","examples":["active"]},"token":{"type":"string","description":"Opaque bearer token embedded in the recipient URL (`lnk_…`).","examples":["lnk_1a2b3c4d5e6f7g8h9j0k1m2n"]},"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":"When the link was last changed (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"useCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Memberships created through the link.","examples":[3]}},"required":["allowedEmailDomains","createdAt","createdBy","enabled","expiresAt","id","lastUsedAt","maxUses","name","orgId","role","status","token","updatedAt","useCount"],"description":"A reusable organization invite link."},"InviteLinkList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/InviteLink"},"description":"Invite links, newest first.","examples":[[]]}},"required":["data"],"description":"A non-paginated list of invite links."},"UpdateInviteLinkRequest":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Whether the link is enabled.","examples":[false]}},"required":["enabled"],"description":"Fields for updating an invite link."},"InviteLinkNotFoundOrOrganizationNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invite_link_not_found","organization_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"DeleteInviteLinkResponse":{"type":"object","properties":{"id":{"type":"string","description":"Deleted invite-link resource id.","examples":["iln_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["id"],"description":"Confirmation that an invite link was deleted."},"InviteLinkRedemption":{"type":"object","properties":{"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 membership was created (ISO 8601).","examples":["2026-01-02T00:00:00.000Z"]},"email":{"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$","description":"Verified email used for redemption.","examples":["dev@example.com"]},"id":{"type":"string","description":"Opaque redemption id (`ilr_…`).","examples":["ilr_1a2b3c4d5e6f7g8h9j0k1m2n"]},"inviteLinkId":{"type":"string","description":"Invite-link resource id used for redemption.","examples":["iln_1a2b3c4d5e6f7g8h9j0k1m2n"]},"inviteLinkName":{"type":"string","description":"Link name at redemption time.","examples":["Community"]},"orgId":{"type":"string","description":"Organization id joined through the link.","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"userId":{"type":"string","description":"User id that redeemed the link.","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["createdAt","email","id","inviteLinkId","inviteLinkName","orgId","userId"],"description":"An invite-link redemption audit record."},"InviteLinkRedemptionList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/InviteLinkRedemption"},"description":"Redemptions, newest first.","examples":[[]]}},"required":["data"],"description":"A non-paginated list of invite-link redemptions."},"InviteLinkTokenRequest":{"type":"object","properties":{"token":{"type":"string","description":"Opaque invite-link bearer token.","examples":["lnk_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["token"],"description":"An invite-link bearer token."},"ResolveInviteLinkResponse":{"type":"object","properties":{"orgName":{"type":"string","description":"Human-readable name of the organization.","examples":["Acme, Inc."]},"role":{"type":"string","const":"member","description":"Role granted by the link.","examples":["member"]}},"required":["orgName","role"],"description":"A public summary of an active invite link."},"InviteLinkNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["invite_link_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"AcceptInviteLinkResponse":{"type":"object","properties":{"orgId":{"type":"string","description":"Organization id joined through the link.","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"role":{"type":"string","const":"member","description":"Role granted by the link.","examples":["member"]},"userId":{"type":"string","description":"Member user id.","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["orgId","role","userId"],"description":"The membership granted through an invite link."},"ApiKeyForbiddenOrApiKeyIpForbiddenOrForbiddenOrInviteLinkEmailForbiddenError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_forbidden","api_key_ip_forbidden","forbidden","invite_link_email_forbidden"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"User":{"type":"object","properties":{"address":{"description":"Wallet address bound to this user, when wallet sign-in established it.","examples":["0x0000000000000000000000000000000000000001"],"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"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 user was created (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"email":{"description":"Verified email from the wallet identity token, when present.","examples":["dev@example.com"],"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"id":{"type":"string","description":"Opaque user id (`usr_…`).","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"]},"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":"When the user was last updated (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]}},"required":["createdAt","id","updatedAt"],"description":"The signed-in developer."},"UserNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["user_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"Member":{"type":"object","properties":{"address":{"description":"The member's wallet address, when wallet sign-in established it.","examples":["0x20f414b3cbcf1fd8e8f5e1c1c2e3d4a5b6c7d8e9"],"type":"string","pattern":"^0x[0-9a-fA-F]{40}$"},"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 member joined (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"email":{"description":"The member's verified email, when known.","examples":["dev@example.com"],"type":"string","format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"role":{"type":"string","enum":["member","admin","owner"],"description":"Membership role.","examples":["admin"]},"userId":{"type":"string","description":"Member user id (`usr_…`).","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["createdAt","role","userId"],"description":"One organization member: the membership plus the member's identity."},"MemberList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Member"},"description":"The members, oldest first.","examples":[[]]}},"required":["data"],"description":"A non-paginated list of an organization's members."},"UpdateMemberRequest":{"type":"object","properties":{"role":{"type":"string","enum":["member","admin","owner"],"description":"Membership role.","examples":["admin"]}},"required":["role"],"description":"Fields for changing a member's role."},"MemberNotFoundOrOrganizationNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["member_not_found","organization_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"LastOwnerError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["last_owner"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"RemoveMemberResponse":{"type":"object","properties":{"userId":{"type":"string","description":"User id (`usr_…`) of the removed member.","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["userId"],"description":"Confirmation that the member was removed."},"Organization":{"type":"object","properties":{"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 organization was created (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"id":{"type":"string","description":"Opaque organization id (`org_…`).","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"name":{"type":"string","description":"Human-readable organization name.","examples":["Acme, Inc."]},"role":{"description":"The caller's role; absent for API keys and the super admin.","examples":["owner"],"type":"string","enum":["member","admin","owner"]},"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":"When the organization was last updated (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]}},"required":["createdAt","id","name","updatedAt"],"description":"An organization: the top-level tenant that owns API keys."},"OrganizationList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Organization"},"description":"The organizations, newest first."}},"required":["data"],"description":"A non-paginated list of organizations."},"CreateOrganizationRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Human-readable name.","examples":["Acme, Inc."]}},"required":["name"],"description":"Fields for creating an organization."},"UpdateOrganizationRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Human-readable name.","examples":["Acme, Inc."]}},"required":["name"],"description":"Fields for updating an organization."},"DeleteOrganizationResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the organization that was deleted.","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["id"],"description":"Confirmation that the organization was deleted."},"SponsorshipsUnreportedError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["sponsorships_unreported"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"Project":{"type":"object","properties":{"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 project was created (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"environments":{"type":"array","items":{"type":"string","enum":["production","sandbox"]},"description":"Environments available to this project: sandbox (testnet) and production (mainnet).","examples":[["production","sandbox"]]},"id":{"type":"string","description":"Opaque project id (`prj_…`).","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"]},"name":{"type":"string","description":"Human-readable project name.","examples":["Checkout"]},"orgId":{"type":"string","description":"Owning organization id (`org_…`).","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"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":"When the project was last updated (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]}},"required":["createdAt","environments","id","name","orgId","updatedAt"],"description":"A project: an app or integration within an organization."},"ProjectList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Project"},"description":"The projects, newest first."}},"required":["data"],"description":"A non-paginated list of an organization's projects."},"CreateProjectRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Human-readable name.","examples":["Checkout"]}},"required":["name"],"description":"Fields for creating a project."},"OrganizationNotFoundOrProjectNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["organization_not_found","project_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"UpdateProjectRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100,"description":"Human-readable name.","examples":["Checkout"]}},"required":["name"],"description":"Fields for updating a project."},"DeleteProjectResponse":{"type":"object","properties":{"id":{"type":"string","description":"ID of the project that was deleted.","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["id"],"description":"Confirmation that the project was deleted."},"Scope":{"type":"object","properties":{"description":{"type":"string","description":"Human-readable explanation of what the scope grants.","examples":["Read webhook subscriptions."]},"scope":{"type":"string","description":"Scope identifier used in API-key grants and route policies. Zone templates carry a concrete chain id and access level in grants.","examples":["data:read"]},"selfServe":{"type":"boolean","description":"Whether an eligible session may self-mint this scope.","examples":[true]}},"required":["description","scope","selfServe"],"description":"A single issuable API-key scope."},"ScopeList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Scope"},"description":"Issuable API-key scopes.","examples":[[]]}},"required":["data"],"description":"Response body for the scope catalog."},"RequestUsageByKey":{"type":"object","properties":{"apiKeyId":{"type":"string","description":"API key id (`key_…`).","examples":["key_1a2b3c4d5e6f7g8h9j0k1m2n"]},"averageDurationMs":{"type":"number","description":"Average request duration in milliseconds.","examples":[12.3]},"errors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Requests whose status was at least 400.","examples":[3]},"requests":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total requests.","examples":[120]}},"required":["apiKeyId","averageDurationMs","errors","requests"],"description":"Usage grouped by API key."},"RequestUsageByRoute":{"type":"object","properties":{"averageDurationMs":{"type":"number","description":"Average request duration in milliseconds.","examples":[18.2]},"errors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Requests whose status was at least 400.","examples":[2]},"requests":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total requests.","examples":[80]},"route":{"type":"string","description":"Matched route pattern.","examples":["/v1/transactions/:hash"]}},"required":["averageDurationMs","errors","requests","route"],"description":"Usage grouped by route."},"RequestUsageByStatus":{"type":"object","properties":{"requests":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total requests.","examples":[100]},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"HTTP status code.","examples":[200]}},"required":["requests","status"],"description":"Usage grouped by status code."},"RequestUsageSeriesPoint":{"type":"object","properties":{"errors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Requests whose status was at least 400.","examples":[1]},"requests":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total requests.","examples":[40]},"time":{"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":"Bucket start timestamp (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]}},"required":["errors","requests","time"],"description":"One usage series point."},"RequestUsageTotals":{"type":"object","properties":{"averageDurationMs":{"type":"number","description":"Average request duration in milliseconds.","examples":[15.6]},"errors":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Requests whose status was at least 400.","examples":[5]},"requests":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Total requests.","examples":[200]}},"required":["averageDurationMs","errors","requests"],"description":"Overall usage totals."},"RequestUsage":{"type":"object","properties":{"byKey":{"type":"array","items":{"$ref":"#/components/schemas/RequestUsageByKey"},"description":"Usage grouped by API key.","examples":[[]]},"byRoute":{"type":"array","items":{"$ref":"#/components/schemas/RequestUsageByRoute"},"description":"Usage grouped by route.","examples":[[]]},"byStatus":{"type":"array","items":{"$ref":"#/components/schemas/RequestUsageByStatus"},"description":"Usage grouped by status code.","examples":[[]]},"from":{"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":"Inclusive lower timestamp bound used for the read (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"interval":{"type":"string","enum":["day","hour"],"description":"Bucket size used for the time series.","examples":["day"]},"series":{"type":"array","items":{"$ref":"#/components/schemas/RequestUsageSeriesPoint"},"description":"Usage grouped into time buckets.","examples":[[]]},"to":{"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":"Inclusive upper timestamp bound used for the read (ISO 8601).","examples":["2026-01-31T23:59:59.000Z"]},"totals":{"$ref":"#/components/schemas/RequestUsageTotals"}},"required":["byKey","byRoute","byStatus","from","interval","series","to","totals"],"description":"Request usage."},"AnalyticsUnconfiguredError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["analytics_unconfigured"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"SponsorshipUsageBucket":{"type":"object","properties":{"count":{"type":"number","description":"Sponsored transactions recorded in the bucket, any status.","examples":[42]},"failed":{"type":"number","description":"Sponsored transactions in the bucket whose status is `failed`.","examples":[3]},"feeTotal":{"type":"object","properties":{"amount":{"type":"string","description":"Committed fees as a decimal string: finalized fees plus in-flight fee caps; failed rows contribute zero.","examples":["12.34"]},"currency":{"type":"string","enum":["usd"],"description":"Currency of the fee figure.","examples":["usd"]}},"required":["amount","currency"],"description":"Committed fees for the bucket.","examples":[{"amount":"12.34","currency":"usd"}]},"timestamp":{"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":"Bucket start (ISO 8601), aligned to UTC calendar boundaries.","examples":["2026-01-01T00:00:00.000Z"]}},"required":["count","failed","feeTotal","timestamp"],"description":"One time bucket of sponsorship usage."},"SponsorshipUsage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SponsorshipUsageBucket"},"description":"Time-ordered usage buckets; buckets with no sponsorships are omitted.","examples":[[]]}},"required":["data"],"description":"Sponsorship usage bucketed over time."},"CreateVerifiedTokenRequestInput":{"type":"object","properties":{"address":{"description":"The TIP-20 token contract address on Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"currency":{"type":"string","minLength":1,"maxLength":10,"description":"The currency label for this token, such as `USD`.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":255,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"logoUri":{"type":"string","maxLength":2048,"format":"uri","description":"The HTTPS URL for this token’s logo image, when one is set.","examples":["https://assets.tempo.xyz/icons/usdc.svg"]},"name":{"type":"string","minLength":1,"maxLength":100,"description":"The token’s human-readable name.","examples":["USD Coin"]},"symbol":{"type":"string","minLength":1,"maxLength":20,"description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC"]},"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"logo":{"type":"string","description":"Inline SVG logo markup, published to the asset store on approval.","examples":["<svg xmlns=\"http://www.w3.org/2000/svg\"/>"]},"note":{"type":"string","maxLength":500,"description":"Optional note to the reviewers.","examples":["We are the token issuer."]}},"required":["address","currency","decimals","name","symbol","chainId"],"description":"Fields for requesting verification of a token."},"VerifiedTokenRequest":{"type":"object","properties":{"address":{"description":"The TIP-20 token contract address on Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"currency":{"type":"string","minLength":1,"description":"The currency label for this token, such as `USD` for USD-denominated stablecoins.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":255,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"logoUri":{"description":"The curated HTTPS URL for this token’s logo image, when one is set.","examples":["https://assets.tempo.xyz/icons/usdc.svg"],"type":"string","format":"uri"},"name":{"type":"string","minLength":1,"description":"The token’s human-readable name.","examples":["USD Coin"]},"symbol":{"type":"string","minLength":1,"description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC"]},"chainId":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The Tempo chain id the token belongs to.","examples":[4217]},"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 request was created (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]},"id":{"type":"string","description":"Opaque request resource id (`vtr_…`).","examples":["vtr_1a2b3c4d5e6f7g8h9j0k1m2n"]},"logo":{"type":"string","description":"Inline SVG logo markup uploaded with the request, when present.","examples":["<svg xmlns=\"http://www.w3.org/2000/svg\"/>"]},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Requester note to the reviewers, or null.","examples":["We are the token issuer.",null]},"orgId":{"type":"string","description":"Requesting organization id (`org_…`).","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"requestedBy":{"type":"string","description":"User id that submitted the request.","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"]},"reviewNote":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Reviewer note shown when the request was denied, or null.","examples":["Logo URL is unreachable.",null]},"reviewedAt":{"anyOf":[{"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))$"},{"type":"null"}],"description":"When the request was reviewed (ISO 8601), or null while pending.","examples":["2026-01-02T00:00:00.000Z",null]},"status":{"type":"string","enum":["approved","denied","pending"],"description":"Review status of the request.","examples":["pending"]},"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":"When the request was last changed (ISO 8601).","examples":["2026-01-01T00:00:00.000Z"]}},"required":["address","currency","decimals","name","symbol","chainId","createdAt","id","note","orgId","requestedBy","reviewNote","reviewedAt","status","updatedAt"],"description":"An organization's request to add a token to the curated verified list."},"RequestLimitReachedOrRequestPendingExistsOrVerifiedSymbolExistsOrVerifiedTokenExistsError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["request_limit_reached","request_pending_exists","verified_symbol_exists","verified_token_exists"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"VerifiedTokenRequestList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VerifiedTokenRequest"},"description":"The organization's verification requests, newest first.","examples":[[]]}},"required":["data"],"description":"A non-paginated list of an organization's verified-token requests."},"CancelVerifiedTokenRequestResponse":{"type":"object","properties":{"id":{"type":"string","description":"Canceled request resource id.","examples":["vtr_1a2b3c4d5e6f7g8h9j0k1m2n"]}},"required":["id"],"description":"Confirmation that a verified-token request was canceled."},"OrganizationNotFoundOrVerifiedTokenRequestNotFoundError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["organization_not_found","verified_token_request_not_found"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"RequestNotPendingError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["request_not_pending"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"CreateOrganizationWebhookRequest":{"allOf":[{"$ref":"#/components/schemas/CreateWebhookRequest"},{"type":"object","properties":{"chainId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Tempo chain ID for this subscription.","examples":[4217]},"environment":{"type":"string","enum":["production","sandbox"],"description":"API-key environment whose private funding resources are delivered.","examples":["production"]}},"required":["chainId"]}],"description":"Details for creating an organization webhook subscription."},"CreateOrganizationWebhookUrlResponse":{"type":"object","properties":{"chainId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Tempo chain ID for this subscription.","examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 subscription was created, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]},"destination":{"type":"object","properties":{"type":{"type":"string","const":"url","description":"HTTPS destination.","examples":["url"]},"url":{"type":"string","format":"uri","description":"Your HTTPS endpoint where Tempo sends signed event POSTs.","examples":["https://example.com/webhooks"]}},"required":["type","url"],"description":"HTTPS webhook destination.","examples":[{"type":"url","url":"https://example.com/webhooks"}]},"environment":{"description":"API-key environment for private resource events, when applicable.","examples":["production"],"type":"string","enum":["production","sandbox"]},"eventType":{"type":"string","enum":["block:created","funding:deposit.updated","funding:transfer.updated","log:emitted","token:transfer","transaction:included"],"description":"Event type you can subscribe to.","examples":["token:transfer"]},"expiresAt":{"description":"When the subscription expires, as an ISO 8601 timestamp. Only MPP-paid subscriptions expire.","examples":["2024-01-01T00:00:00Z"],"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))$"},"failureCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of delivery failures in a row for this subscription, capped at the auto-disable threshold.","examples":[0]},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Filters applied to this event type.","examples":[{"address":"0x20c0000000000000000000008f5425160ebe5525"}]},"id":{"type":"string","description":"Webhook subscription ID (`wh_…`).","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"lastDeliveryAt":{"description":"When Tempo last delivered an event successfully, as an ISO 8601 timestamp. Refreshed at most once per minute during sustained delivery.","examples":["2024-01-01T00:00:00Z"],"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))$"},"status":{"type":"string","enum":["active","disabled","paused"],"description":"Current state of the webhook subscription.","examples":["active"]},"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":"When the subscription was last changed, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]},"secret":{"type":"string","description":"HMAC signing secret (`whsec_…`) used to verify Tempo webhook signatures. It is shown once when you create the webhook, so store it now.","examples":["whsec_abc123"]}},"required":["chainId","createdAt","destination","eventType","failureCount","filters","id","status","updatedAt","secret"],"description":"Created HTTPS webhook with its one-time signing secret."},"CreateOrganizationWebhookSlackResponse":{"type":"object","properties":{"chainId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Tempo chain ID for this subscription.","examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 subscription was created, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]},"destination":{"type":"object","properties":{"type":{"type":"string","const":"slack","description":"Slack destination.","examples":["slack"]},"url":{"type":"string","const":"https://hooks.slack.com/…","description":"Redacted Slack webhook URL.","examples":["https://hooks.slack.com/…"]}},"required":["type","url"],"description":"Slack webhook destination with its URL redacted.","examples":[{"type":"slack","url":"https://hooks.slack.com/…"}]},"environment":{"description":"API-key environment for private resource events, when applicable.","examples":["production"],"type":"string","enum":["production","sandbox"]},"eventType":{"type":"string","enum":["block:created","funding:deposit.updated","funding:transfer.updated","log:emitted","token:transfer","transaction:included"],"description":"Event type you can subscribe to.","examples":["token:transfer"]},"expiresAt":{"description":"When the subscription expires, as an ISO 8601 timestamp. Only MPP-paid subscriptions expire.","examples":["2024-01-01T00:00:00Z"],"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))$"},"failureCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of delivery failures in a row for this subscription, capped at the auto-disable threshold.","examples":[0]},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Filters applied to this event type.","examples":[{"address":"0x20c0000000000000000000008f5425160ebe5525"}]},"id":{"type":"string","description":"Webhook subscription ID (`wh_…`).","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"lastDeliveryAt":{"description":"When Tempo last delivered an event successfully, as an ISO 8601 timestamp. Refreshed at most once per minute during sustained delivery.","examples":["2024-01-01T00:00:00Z"],"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))$"},"status":{"type":"string","enum":["active","disabled","paused"],"description":"Current state of the webhook subscription.","examples":["active"]},"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":"When the subscription was last changed, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]}},"required":["chainId","createdAt","destination","eventType","failureCount","filters","id","status","updatedAt"],"description":"Created Slack webhook with its destination redacted."},"CreateOrganizationWebhookBetterstackResponse":{"type":"object","properties":{"chainId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Tempo chain ID for this subscription.","examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 subscription was created, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]},"destination":{"type":"object","properties":{"token":{"type":"string","const":"[redacted]","description":"Redacted Better Stack source token.","examples":["[redacted]"]},"type":{"type":"string","const":"betterstack","description":"Better Stack destination.","examples":["betterstack"]},"url":{"type":"string","format":"uri","description":"Your Better Stack source ingest host URL.","examples":["https://s1234567.eu-nbg-2.betterstackdata.com"]}},"required":["token","type","url"],"description":"Better Stack destination with its token redacted.","examples":[{"token":"[redacted]","type":"betterstack","url":"https://s1234567.eu-nbg-2.betterstackdata.com"}]},"environment":{"description":"API-key environment for private resource events, when applicable.","examples":["production"],"type":"string","enum":["production","sandbox"]},"eventType":{"type":"string","enum":["block:created","funding:deposit.updated","funding:transfer.updated","log:emitted","token:transfer","transaction:included"],"description":"Event type you can subscribe to.","examples":["token:transfer"]},"expiresAt":{"description":"When the subscription expires, as an ISO 8601 timestamp. Only MPP-paid subscriptions expire.","examples":["2024-01-01T00:00:00Z"],"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))$"},"failureCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of delivery failures in a row for this subscription, capped at the auto-disable threshold.","examples":[0]},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Filters applied to this event type.","examples":[{"address":"0x20c0000000000000000000008f5425160ebe5525"}]},"id":{"type":"string","description":"Webhook subscription ID (`wh_…`).","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"lastDeliveryAt":{"description":"When Tempo last delivered an event successfully, as an ISO 8601 timestamp. Refreshed at most once per minute during sustained delivery.","examples":["2024-01-01T00:00:00Z"],"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))$"},"status":{"type":"string","enum":["active","disabled","paused"],"description":"Current state of the webhook subscription.","examples":["active"]},"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":"When the subscription was last changed, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]}},"required":["chainId","createdAt","destination","eventType","failureCount","filters","id","status","updatedAt"],"description":"Created Better Stack webhook with its credentials redacted."},"CreateOrganizationWebhookResponse":{"anyOf":[{"$ref":"#/components/schemas/CreateOrganizationWebhookUrlResponse"},{"$ref":"#/components/schemas/CreateOrganizationWebhookSlackResponse"},{"$ref":"#/components/schemas/CreateOrganizationWebhookBetterstackResponse"}],"description":"The new webhook subscription. HTTPS endpoints include their one-time signing secret."},"ApiKeyMalformedOrBodyInvalidOrChainIdUnsupportedOrEventTypeUnsupportedOrFiltersInvalidOrParamInvalidOrUrlInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_malformed","body_invalid","chain_id_unsupported","event_type_unsupported","filters_invalid","param_invalid","url_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"OrganizationNotFoundOrWebhooksNotEnabledError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["organization_not_found","webhooks_not_enabled"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"OrganizationWebhook":{"type":"object","properties":{"chainId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Tempo chain ID for this subscription.","examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 subscription was created, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]},"destination":{"$ref":"#/components/schemas/WebhookPublicDestination"},"environment":{"description":"API-key environment for private resource events, when applicable.","examples":["production"],"type":"string","enum":["production","sandbox"]},"eventType":{"type":"string","enum":["block:created","funding:deposit.updated","funding:transfer.updated","log:emitted","token:transfer","transaction:included"],"description":"Event type you can subscribe to.","examples":["token:transfer"]},"expiresAt":{"description":"When the subscription expires, as an ISO 8601 timestamp. Only MPP-paid subscriptions expire.","examples":["2024-01-01T00:00:00Z"],"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))$"},"failureCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of delivery failures in a row for this subscription, capped at the auto-disable threshold.","examples":[0]},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Filters applied to this event type.","examples":[{"address":"0x20c0000000000000000000008f5425160ebe5525"}]},"id":{"type":"string","description":"Webhook subscription ID (`wh_…`).","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"lastDeliveryAt":{"description":"When Tempo last delivered an event successfully, as an ISO 8601 timestamp. Refreshed at most once per minute during sustained delivery.","examples":["2024-01-01T00:00:00Z"],"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))$"},"status":{"type":"string","enum":["active","disabled","paused"],"description":"Current state of the webhook subscription.","examples":["active"]},"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":"When the subscription was last changed, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]}},"required":["chainId","createdAt","destination","eventType","failureCount","filters","id","status","updatedAt"],"description":"An organization webhook subscription."},"OrganizationWebhookList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationWebhook"},"description":"The organization's webhooks, newest first.","examples":[[]]}},"required":["data"],"description":"An organization's webhook subscriptions."},"OrganizationWebhookDeliverySummary":{"type":"object","properties":{"attempt":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Retry attempt number for this delivery, starting at 1.","examples":[1]},"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 this delivery attempt was created, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]},"error":{"description":"Why delivery failed, present when `status` is `failed`.","examples":["Connection timed out"],"type":"string"},"eventId":{"type":"string","description":"Stable event ID (`evt_…`) you can use to dedupe webhook deliveries.","examples":["evt_abc123"]},"id":{"type":"string","description":"Webhook delivery ID (`whd_…`).","examples":["whd_001718668800000_C1yJkk7CuML98HFthEDk9PsY"]},"requestUrl":{"type":"string","format":"uri","description":"Your callback URL that Tempo attempted to deliver to.","examples":["https://example.com/webhooks"]},"responseMs":{"description":"How long the delivery attempt took in milliseconds, when Tempo made a request.","examples":[12],"type":"integer","minimum":0,"maximum":9007199254740991},"responseStatus":{"description":"HTTP status your endpoint returned, when Tempo received a response.","examples":[200],"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["failed","pending","succeeded"],"description":"Outcome of a webhook delivery attempt.","examples":["succeeded"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) this delivery belongs to.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]}},"required":["attempt","createdAt","eventId","id","requestUrl","status","subscriptionId"],"description":"One attempt by Tempo to deliver an event to a webhook destination."},"OrganizationWebhookDeliveryList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationWebhookDeliverySummary"},"description":"Webhook delivery attempts on this page.","examples":[[]]},"meta":{"description":"Extra response metadata requested with `include`.","examples":[{"totalCount":1,"totalCountCapped":false}],"type":"object","properties":{"totalCountCapped":{"type":"boolean","description":"Whether `totalCount` hit the count cap. When true, `totalCount` is a lower bound rather than an exact total.","examples":[false]},"totalCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows matching the query, exact when `totalCountCapped` is false and a lower bound (at least this many, computed up to 10000) when `totalCountCapped` is true. Independent of pagination: use `nextCursor` to page, not this count.","examples":[42]}},"required":["totalCountCapped","totalCount"]},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"description":"A page of an organization's webhook delivery attempts."},"OrganizationNotFoundOrWebhookNotFoundOrWebhooksNotEnabledError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["organization_not_found","webhook_not_found","webhooks_not_enabled"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"WebhookTransferEvent":{"type":"object","properties":{"address":{"description":"TIP-20 token contract address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"amount":{"type":"string","description":"Amount transferred, as a decimal integer string in the token base unit.","examples":["10000"]},"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block number where this transfer was included.","examples":[1000002]},"recipient":{"description":"Address that received the transfer.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"sender":{"description":"Address that sent the transfer.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2026-01-14T18:38:03.685Z"]},"token":{"type":"object","properties":{"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of decimals the token uses.","examples":[6]},"symbol":{"type":"string","description":"Token symbol (e.g. `USDC`).","examples":["USDC"]}},"required":["decimals","symbol"],"description":"Best-effort token metadata (symbol/decimals) resolved before delivery so `amount` can render as a human amount. Omitted when the lookup is unavailable."},"transactionHash":{"description":"Transaction hash that contains this transfer.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["address","amount","blockNumber","recipient","sender","timestamp","transactionHash"],"description":"Payload for a `token:transfer` event, decoded from a TIP-20 `Transfer` log."},"WebhookTransactionEvent":{"type":"object","properties":{"blockHash":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"null"}],"description":"The block hash once included, or `null` while the transaction is pending."},"blockNumber":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"The block number once included, or `null` while the transaction is pending.","examples":[23456789]},"calls":{"description":"Decoded calls for Tempo account-abstraction transactions.","type":"array","items":{"$ref":"#/components/schemas/TransactionCall"},"examples":[[{"data":"0xdeadbeef","to":null}]]},"chainId":{"description":"The chain ID that this transaction belongs to.","examples":[4217],"type":"integer","minimum":0,"maximum":9007199254740991},"feeToken":{"$ref":"#/components/schemas/RpcTokenReference"},"gas":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Maximum gas the transaction is allowed to use.","examples":[21000]},"gasPrice":{"description":"Gas price for legacy-style transactions, expressed as a decimal string when humanized.","type":"string","pattern":"^\\d+$","examples":["1000000"]},"hash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies this transaction.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"id":{"description":"Stable resource ID for this API response; it is the transaction hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"input":{"description":"Call data for non-Tempo transaction formats, as `0x`-prefixed bytes.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"maxFeePerGas":{"description":"Maximum total fee per gas the sender is willing to pay.","type":"string","pattern":"^\\d+$","examples":["1000000"]},"maxPriorityFeePerGas":{"description":"Maximum priority fee per gas for EIP-1559-style transactions.","type":"string","pattern":"^\\d+$","examples":["1000000"]},"meta":{"type":"object","properties":{"rpc":{"type":"object","properties":{"aaAuthorizationList":{"description":"Tempo account-abstraction authorizations attached to the transaction.","type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}},"accessList":{"description":"EIP-2930 access list that predeclares accounts and storage slots for the transaction.","type":"array","items":{"$ref":"#/components/schemas/RpcTransactionAccessListItem"}},"authorizationList":{"description":"EIP-7702 authorizations attached to the transaction.","type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}},"blobVersionedHashes":{"description":"Versioned blob hashes for EIP-4844 blob data.","type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"blockHash":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},{"type":"null"}],"description":"The block hash once included, or `null` while the transaction is pending."},"blockNumber":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}],"description":"The block number once included, or `null` while the transaction is pending."},"blockTimestamp":{"description":"The block timestamp for the block that included this transaction.","anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]},"calls":{"description":"Decoded calls for Tempo account-abstraction transactions.","anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/RpcTransactionCall"},"examples":[[{"data":"0xdeadbeef","input":"0xdeadbeef","to":null,"value":"0x0"}]]},{"type":"null","examples":[null]}],"examples":[[{"data":"0xdeadbeef","input":"0xdeadbeef","to":null,"value":"0x0"}]]},"chainId":{"description":"The chain ID that the transaction is valid on; legacy transactions may omit it.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"feePayer":{"description":"The address that paid the transaction fee.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"feePayerSignature":{"description":"A signature envelope exactly as returned by JSON-RPC.","examples":[{"type":"secp256k1"}],"anyOf":[{"$ref":"#/components/schemas/RpcTransactionSignatureEnvelope"},{"type":"null"}]},"feeToken":{"description":"The fee token requested by the transaction; Tempo fees are paid in USD stablecoins such as `pathUSD`.","anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}]},"from":{"description":"The address that submitted or authorized the transaction.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"gas":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Maximum gas the transaction is allowed to use.","examples":["0x1a"]},"gasPrice":{"description":"Gas price for legacy-style transactions, expressed as a decimal string when humanized.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"hash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies this transaction.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"input":{"description":"Call data for non-Tempo transaction formats, as `0x`-prefixed bytes.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"keyAuthorization":{"description":"Key authorization data attached to this Tempo transaction.","examples":[{}],"anyOf":[{"type":"object","properties":{},"additionalProperties":{}},{"type":"null"}]},"maxFeePerBlobGas":{"description":"Maximum fee per blob gas for EIP-4844 blob data.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"maxFeePerGas":{"description":"Maximum total fee per gas the sender is willing to pay.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"maxPriorityFeePerGas":{"description":"Maximum priority fee per gas for EIP-1559-style transactions.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"nonce":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Nonce from the sender account that orders and de-duplicates transactions.","examples":["0x1a"]},"nonceKey":{"description":"Tempo two-dimensional nonce key used to group nonce sequences.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"r":{"description":"The `r` value from the transaction ECDSA signature.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"s":{"description":"The `s` value from the transaction ECDSA signature.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"signature":{"$ref":"#/components/schemas/RpcTransactionSignatureEnvelope"},"to":{"description":"The recipient address, or `null` when the transaction creates a contract.","anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}]},"transactionIndex":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}],"description":"The transaction position within its block, or `null` while pending."},"type":{"description":"Raw transaction type byte, such as `0x2` for EIP-1559 or `0x76` for Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0x2"]},"v":{"description":"The `v` recovery value from the transaction ECDSA signature.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"validAfter":{"description":"Earliest Unix timestamp when this Tempo transaction may be included.","examples":["0x0"],"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]},"validBefore":{"description":"Latest Unix timestamp when this Tempo transaction may be included.","examples":["0xffffffff"],"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]},"value":{"description":"Native value sent by non-Tempo transaction formats.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"yParity":{"description":"The y-parity value from the transaction signature.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]}},"required":["blockHash","blockNumber","from","gas","hash","nonce","transactionIndex","type"],"additionalProperties":{},"description":"The original JSON-RPC transaction payload."}},"required":["rpc"],"description":"Metadata for this transaction webhook event."},"nonce":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Nonce from the sender account that orders and de-duplicates transactions.","examples":[0]},"nonceKey":{"description":"Tempo two-dimensional nonce key used by Tempo transactions.","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0xdeadbeef"]},"recipient":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}],"description":"The recipient address, or `null` when the transaction creates a contract."},"sender":{"description":"The address that submitted or authorized the transaction.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"timestamp":{"anyOf":[{"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))$"},{"type":"null"}],"description":"The block timestamp as ISO 8601, or `null` while the transaction is pending.","examples":["2024-01-01T00:00:00Z"]},"transactionIndex":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"The transaction position within its block, or `null` while pending.","examples":[0]},"type":{"$ref":"#/components/schemas/TransactionType"},"validAfter":{"description":"Earliest ISO 8601 time when this Tempo transaction may be included.","examples":["2024-01-01T00:00:00Z"],"anyOf":[{"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))$"},{"type":"null"}]},"validBefore":{"description":"Latest ISO 8601 time when this Tempo transaction may be included.","examples":["2024-01-01T00:00:00Z"],"anyOf":[{"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))$"},{"type":"null"}]},"value":{"type":"string","pattern":"^\\d+$","description":"Native value transferred by this transaction, as a decimal string.","examples":["1000000"]}},"required":["blockHash","blockNumber","gas","hash","id","meta","nonce","recipient","sender","timestamp","transactionIndex","type","value"],"description":"A transaction included in a block."},"WebhookLogEvent":{"type":"object","properties":{"address":{"description":"Contract that emitted the log.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"args":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Decoded event arguments, present only when a `signature` filter was supplied and decoding succeeded.","examples":[{"from":"0xe768…","to":"0x9e39…","value":"10000"}]},"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block number the log was included in.","examples":[1000002]},"data":{"description":"Unindexed log data (ABI-encoded).","type":"string","pattern":"^0x[0-9a-fA-F]*$","examples":["0x0000000000000000000000000000000000000000000000000000000000002710"]},"event":{"type":"object","properties":{"name":{"type":"string","description":"Decoded event name.","examples":["Transfer"]},"signature":{"type":"string","description":"Human-readable event signature used to decode the log.","examples":["event Transfer(address indexed from, address indexed to, uint256 value)"]},"topic0":{"description":"Event signature hash (topic 0).","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]}},"required":["name","signature","topic0"],"description":"Decoded event identity, present only when a `signature` filter was supplied."},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Index of the log within its block.","examples":[0]},"timestamp":{"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 block was produced, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.685Z"]},"topics":{"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"description":"Log topics, starting with the event signature hash (topic 0).","examples":[["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x000000000000000000000000e7687128b0a808c2831ff94d4f7b2fb35c65af38"]]},"transactionHash":{"description":"Hash of the transaction that emitted the log.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"transactionIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Index of the transaction within its block.","examples":[0]}},"required":["address","blockNumber","data","logIndex","timestamp","topics","transactionHash","transactionIndex"],"description":"Payload for a `log:emitted` event (a raw contract event log)."},"WebhookBlockEvent":{"type":"object","properties":{"number":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block height, starting from genesis block 0.","examples":[1000002]},"hash":{"description":"Hash that identifies this block.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"parentHash":{"description":"Hash of the previous block in the chain.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"miner":{"description":"Address of the block producer (miner/proposer).","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"proposer":{"description":"Consensus proposer of the block, when the chain records one.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"gasUsed":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total gas used by every transaction in this block.","examples":[4340281]},"gasLimit":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Maximum gas available for all transactions in this block.","examples":[500000000]},"transactionCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of transactions included in this block.","examples":[3]},"timestamp":{"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 block was produced, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.685Z"]}},"required":["number","hash","parentHash","miner","gasUsed","gasLimit","transactionCount","timestamp"],"description":"Payload for a `block:created` event (a new block header)."},"WebhookPingEvent":{"type":"object","properties":{"ping":{"type":"boolean","const":true,"description":"Marks this payload as a synthetic ping test.","examples":[true]}},"required":["ping"],"description":"Payload for a webhook ping test delivery."},"WebhookEventEnvelope":{"oneOf":[{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"$ref":"#/components/schemas/WebhookTransferEvent"},"type":{"type":"string","const":"token:transfer","examples":["token:transfer"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"title":"Transfer event"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"$ref":"#/components/schemas/WebhookTransactionEvent"},"type":{"type":"string","const":"transaction:included","examples":["transaction:included"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"title":"Included transaction event"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"$ref":"#/components/schemas/WebhookLogEvent"},"type":{"type":"string","const":"log:emitted","examples":["log:emitted"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"title":"Log event"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"$ref":"#/components/schemas/WebhookBlockEvent"},"type":{"type":"string","const":"block:created","examples":["block:created"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"title":"Block event"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"$ref":"#/components/schemas/FundingDeposit"},"type":{"type":"string","const":"funding:deposit.updated","examples":["funding:deposit.updated"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"title":"Funding deposit updated event"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"$ref":"#/components/schemas/FundingTransfer"},"type":{"type":"string","const":"funding:transfer.updated","examples":["funding:transfer.updated"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"title":"Funding transfer updated event"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"context":{"$ref":"#/components/schemas/WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"$ref":"#/components/schemas/WebhookPingEvent"},"type":{"type":"string","const":"ping","examples":["ping"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"title":"Ping (test delivery)"}],"description":"The signed JSON payload Tempo POSTs to a webhook destination."},"OrganizationWebhookDelivery":{"type":"object","properties":{"attempt":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Retry attempt number for this delivery, starting at 1.","examples":[1]},"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 this delivery attempt was created, as an ISO 8601 timestamp.","examples":["2024-01-01T00:00:00Z"]},"error":{"description":"Why delivery failed, present when `status` is `failed`.","examples":["Connection timed out"],"type":"string"},"eventId":{"type":"string","description":"Stable event ID (`evt_…`) you can use to dedupe webhook deliveries.","examples":["evt_abc123"]},"id":{"type":"string","description":"Webhook delivery ID (`whd_…`).","examples":["whd_001718668800000_C1yJkk7CuML98HFthEDk9PsY"]},"requestUrl":{"type":"string","format":"uri","description":"Your callback URL that Tempo attempted to deliver to.","examples":["https://example.com/webhooks"]},"responseMs":{"description":"How long the delivery attempt took in milliseconds, when Tempo made a request.","examples":[12],"type":"integer","minimum":0,"maximum":9007199254740991},"responseStatus":{"description":"HTTP status your endpoint returned, when Tempo received a response.","examples":[200],"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"type":"string","enum":["failed","pending","succeeded"],"description":"Outcome of a webhook delivery attempt.","examples":["succeeded"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) this delivery belongs to.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"envelope":{"$ref":"#/components/schemas/WebhookEventEnvelope"}},"required":["attempt","createdAt","eventId","id","requestUrl","status","subscriptionId","envelope"],"description":"A webhook delivery attempt with the exact JSON payload Tempo sent."},"DeliveryNotFoundOrOrganizationNotFoundOrWebhookNotFoundOrWebhooksNotEnabledError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["delivery_not_found","organization_not_found","webhook_not_found","webhooks_not_enabled"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."},"RetryOrganizationWebhookDeliveryResponse":{"type":"object","properties":{"delivered":{"type":"boolean","description":"Whether your endpoint returned a 2xx response.","examples":[true]},"error":{"description":"Why the delivery failed, present when `delivered` is `false`.","examples":["Connection timed out"],"type":"string"},"eventId":{"type":"string","description":"Synthetic event ID (`evt_…`) Tempo sent for this ping.","examples":["evt_abc123"]},"responseMs":{"description":"Round-trip delivery time in milliseconds, when the request completed.","examples":[12],"type":"integer","minimum":0,"maximum":9007199254740991},"responseStatus":{"description":"HTTP status your endpoint returned, when Tempo received a response.","examples":[200],"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["delivered","eventId"],"description":"Result of sending a synthetic ping event to a webhook destination."},"UpdateOrganizationWebhookRequest":{"type":"object","properties":{"status":{"type":"string","enum":["active","disabled","paused"],"description":"Current state of the webhook subscription.","examples":["active"]}},"required":["status"],"description":"New delivery state for a webhook subscription."},"DeleteOrganizationWebhookResponse":{"type":"object","properties":{"id":{"type":"string","description":"Deleted webhook subscription id.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]}},"required":["id"],"description":"Confirmation that a webhook subscription was deleted."},"ApiKeyInvalidError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","enum":["api_key_invalid"],"description":"A short, stable code you can branch on in your code (e.g. `token_not_found`)."},"details":{"description":"A list of specific problems, when the error is about your request (e.g. invalid fields).","type":"array","items":{"$ref":"#/components/schemas/ErrorDetail"}},"message":{"type":"string","description":"A human-readable explanation of what went wrong."}},"required":["code","message"],"description":"What went wrong."},"requestId":{"type":"string","description":"The id of this request — include it when contacting support."}},"required":["error","requestId"],"description":"The standard shape returned for every error response."}}},"info":{"title":"Tempo API","description":"REST API for reading and interacting with Tempo","version":"1.0.0"},"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"servers":[{"url":"/","description":"Relative to the host serving this document."}],"tags":[{"name":"Activities","description":"A readable feed of what an account did onchain."},{"name":"Balances","description":"How much of each token an account holds."},{"name":"Blocks","description":"The ordered batches of transactions making up the chain."},{"name":"Earn","description":"Vaults that earn yield from assets deposited on Tempo."},{"name":"Exchange","description":"Tempo's built-in stablecoin exchange: pairs, swaps, orders, prices."},{"name":"Fee AMM","description":"Pools that convert stablecoins to pay fees."},{"name":"Tokens","description":"TIP-20 token details, supply, and holders."},{"name":"Transactions","description":"Transactions submitted to Tempo, and their receipts."},{"name":"Transfers","description":"Token movements from executing transactions."},{"name":"Verified Tokens","description":"A curated, trusted list of TIP-20 tokens."},{"name":"Webhooks","description":"Organization webhook subscriptions."},{"name":"Zones","description":"Private chain operations anchored to Tempo."},{"name":"Indexer","description":"Run read-only SQL queries against Tempo's indexed data."},{"name":"RPC","description":"Direct access to the chain over Ethereum JSON-RPC. Not part of the stable API contract; best-effort support only. No compatibility, latency, availability, or data-freshness guarantees. Breaking changes may happen with limited notice."},{"name":"CoinGecko","description":"Exchange data in CoinGecko's GeckoTerminal format."},{"name":"Chains","description":"Source chains and stablecoins supported for funding.","x-pagePath":"funding/chains"},{"name":"Deposit Addresses","description":"Reusable funding addresses and deposits detected at those addresses.","x-pagePath":"funding/deposit-addresses"},{"name":"Providers","description":"Providers available for inbound funding.","x-pagePath":"funding/providers"},{"name":"Quotes","description":"Live quotes for funding Tempo from other chains.","x-pagePath":"funding/quotes"},{"name":"Funding Transfers","description":"Inbound funding transfers.","x-displayName":"Transfers","x-pagePath":"funding/transfers"},{"name":"API Keys","description":"Credentials for accessing the Tempo API."},{"name":"Billing","description":"Organization billing backed by Stripe."},{"name":"Faucet","description":"Test token funding for Tempo testnet accounts."},{"name":"Invitations","description":"Pending organization invitations."},{"name":"Invite Links","description":"Reusable organization invite links."},{"name":"Members","description":"Organization team membership."},{"name":"Organizations","description":"Teams that own application workspaces and members."},{"name":"Projects","description":"Application workspaces within an organization."},{"name":"Usage","description":"Request and sponsorship usage for organizations."},{"name":"Users","description":"Users on the Tempo Platform."},{"name":"Verified Token Requests","description":"Organization requests to add tokens to the curated verified list."},{"name":"MPP","description":"Submit completed MPP credentials to Tempo. Validate checks a credential without settling it; Broadcast validates, screens, and submits it. Both require `mpp:write`."},{"name":"MCP","description":"A hosted Model Context Protocol server: the data domain and Tempo docs exposed as tools."},{"name":"Authentication","description":"Authenticate into the Tempo Platform."}],"x-tagGroups":[{"name":"Data API","tags":["Activities","Balances","Blocks","Earn","Exchange","Fee AMM","Tokens","Transactions","Transfers","Verified Tokens","Webhooks","Zones","Indexer","RPC","MCP","CoinGecko"]},{"name":"Funding & Bridge API","tags":["Chains","Deposit Addresses","Providers","Quotes","Funding Transfers"]},{"name":"Management API","tags":["API Keys","Authentication","Billing","Invitations","Invite Links","Members","Organizations","Projects","Usage","Users","Verified Token Requests","Webhooks"]}],"paths":{"/v1/blocks":{"get":{"operationId":"getBlocks","parameters":[{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"order","schema":{"default":"desc","examples":["desc"],"type":"string","enum":["asc","desc"]},"description":"Sort order: `desc` for descending (the default), or `asc` for ascending."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."}],"description":"List the ordered batches of transactions that make up Tempo.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockList"}}},"description":"A page of block summaries.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read indexed block data from TIDX."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read indexed block data from TIDX."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List blocks","tags":["Blocks"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/tokens":{"get":{"operationId":"getTokens","parameters":[{"in":"query","name":"addresses","schema":{"type":"array","items":{"type":"string"},"maxItems":50,"examples":[["0x20c0000000000000000000008f5425160ebe5525"]]},"description":"Comma-separated token contract addresses to fetch (max 50). Returns a single page in input order (unresolvable addresses omitted); `cursor`, `page`, and `order` are inapplicable. Combines with `include`; `currency` and `verified` further filter the resolved set."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"currency","schema":{"examples":["EUR","USD"],"type":"string"},"description":"Only include tokens denominated in this currency (e.g. `USD`). Case-insensitive. Matched against the `currency` field of the onchain `TokenCreated` event, so any string a token deployer wrote is acceptable; the listed examples are the well-known curated currencies."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["admin","createdAt","holderCount","quoteToken","transferStats"]},"examples":[["admin","createdAt","holderCount","quoteToken","transferStats"]]},"description":"Comma-separated extra token details to include, such as `admin,createdAt,holderCount,quoteToken,transferStats`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"order","schema":{"default":"desc","examples":["desc"],"type":"string","enum":["asc","desc"]},"description":"Sort order: `desc` for descending (the default), or `asc` for ascending."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."},{"in":"query","name":"verified","schema":{"type":"boolean","examples":[true]},"description":"When `true`, only return tokens in the curated verified list. `currency`, `include`, and the pagination parameters (`limit`, `page`, `cursor`, `order`) all apply; the list is paginated positionally over its canonical order (`order=asc` reverses it)."}],"description":"Lists TIP-20 tokens on Tempo. TIP-20 is Tempo’s payments-focused token standard and a superset of ERC-20.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenList"}}},"description":"A page of TIP-20 tokens.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List tokens","tags":["Tokens"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/transactions":{"get":{"operationId":"getTransactions","parameters":[{"in":"query","name":"address","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Filter to transactions where this address is either the sender or recipient."},{"in":"query","name":"blockNumber.from","schema":{"examples":[23456789],"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Only include transactions at or after this block number."},{"in":"query","name":"blockNumber.to","schema":{"examples":[23456999],"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Only include transactions at or before this block number."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"feePayer","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Filter to transactions whose fee payer is this address."},{"in":"query","name":"feeToken","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"description":"Filter to transactions whose fee was paid in this token address."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["feeToken.logoUri","feeToken.verified","receipt","totalCount"]},"examples":[["feeToken.logoUri","feeToken.verified","receipt","totalCount"]]},"description":"Comma-separated related resources to include, such as `feeToken.logoUri,feeToken.verified,receipt,totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"order","schema":{"default":"desc","examples":["desc"],"type":"string","enum":["asc","desc"]},"description":"Sort order: `desc` for descending (the default), or `asc` for ascending."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."},{"in":"query","name":"recipient","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Filter to transactions sent to this recipient address."},{"in":"query","name":"sender","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Filter to transactions sent by this sender address."},{"in":"query","name":"status","schema":{"examples":["success"],"type":"string","enum":["success","reverted"]},"description":"Filter to transactions whose receipt shows this execution status."},{"in":"query","name":"timestamp.from","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","examples":["2024-01-01T00:00:00Z"]},"description":"Only include transactions at or after this ISO 8601 timestamp."},{"in":"query","name":"timestamp.to","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","examples":["2024-12-31T23:59:59Z"]},"description":"Only include transactions at or before this ISO 8601 timestamp."}],"description":"List transactions across Tempo, with filters for addresses, blocks, timestamps, fees, and status.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionList"}}},"description":"A page of transactions.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read transaction or token data from an upstream service."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read transaction or token data from an upstream service."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List transactions","tags":["Transactions"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/transfers":{"get":{"operationId":"getTransfers","parameters":[{"in":"query","name":"address","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Only include transfers where this account is the sender or recipient. Use this shortcut by itself, not with `sender` or `recipient`."},{"in":"query","name":"recipient","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Match transfers sent to this recipient address (`to`)."},{"in":"query","name":"sender","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Match transfers sent from this sender address (`from`)."},{"in":"query","name":"token","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"description":"Match transfers for this TIP-20 token contract address."},{"in":"query","name":"blockNumber.from","schema":{"examples":[23456789],"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Only include transfers at or after this block number."},{"in":"query","name":"blockNumber.to","schema":{"examples":[23456999],"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Only include transfers at or before this block number."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["crossToken","memo","token.logoUri","token.verified","totalCount"]},"examples":[["crossToken","memo","token.logoUri","token.verified","totalCount"]]},"description":"Comma-separated related resources to include, such as `token.logoUri,token.verified,memo,crossToken,totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"order","schema":{"default":"desc","examples":["desc"],"type":"string","enum":["asc","desc"]},"description":"Sort order: `desc` for descending (the default), or `asc` for ascending."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."},{"in":"query","name":"timestamp.from","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","examples":["2024-01-01T00:00:00Z"]},"description":"Only include transfers at or after this ISO 8601 timestamp."},{"in":"query","name":"timestamp.to","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","examples":["2024-12-31T23:59:59Z"]},"description":"Only include transfers at or before this ISO 8601 timestamp."},{"in":"query","name":"valuation.currency","schema":{"type":"string","pattern":"^[a-zA-Z]{3}$","examples":["AUD"]},"description":"Currency to denominate values in (case-insensitive, e.g. `AUD`). Must be priced by the configured FX oracle."}],"description":"List token transfer events across Tempo.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenTransferList"}}},"description":"A page of token transfer events.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The indexer or Tempo RPC could not serve this request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The indexer or Tempo RPC could not serve this request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List transfers","tags":["Transfers"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/verified-tokens":{"get":{"operationId":"listVerifiedTokens","parameters":[{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"currency","schema":{"examples":["EUR","USD"],"type":"string"},"description":"Only include verified tokens denominated in this currency, such as `USD`. Matching is case-insensitive."}],"description":"Returns Tempo’s curated verified TIP-20 tokens.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifiedTokenList"}}},"description":"The curated verified TIP-20 tokens.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The verified-token store could not complete the request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The verified-token store could not complete the request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List verified tokens","tags":["Verified Tokens"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/webhooks":{"post":{"operationId":"createWebhook","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookRequest"}}}},"description":"Create a webhook subscription so Tempo can POST signed onchain events to your URL. The signing secret is shown only once, and each call creates a separate subscription.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookResponse"}}},"description":"The created webhook subscription, including the one-time signing secret.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrChainIdUnsupportedOrEventTypeUnsupportedOrFiltersInvalidOrUrlInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The request, destination, filters, or chain are invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The request, destination, filters, or chain are invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyForbiddenOrApiKeyIpForbiddenOrForbiddenOrLimitExceededError"},"example":{"error":{"code":"api_key_forbidden","message":"The API key lacks access or the subscription limit was reached."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The API key lacks access or the subscription limit was reached."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksNotEnabledError"},"example":{"error":{"code":"webhooks_not_enabled","message":"Webhooks are not enabled for this API deployment."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Webhooks are not enabled for this API deployment."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create webhook","tags":["Webhooks"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["webhooks:write"]},"get":{"operationId":"listWebhooks","parameters":[{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["totalCount"]},"examples":[["totalCount"]]},"description":"Comma-separated optional resources to embed, e.g. `totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."}],"description":"List your webhook subscriptions.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookList"}}},"description":"A page of webhook subscriptions.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The query parameters are invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The query parameters are invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksNotEnabledError"},"example":{"error":{"code":"webhooks_not_enabled","message":"Webhooks are not enabled for this API deployment."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Webhooks are not enabled for this API deployment."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List webhooks","tags":["Webhooks"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["webhooks:read"]}},"/v1/invitations":{"get":{"operationId":"listMyInvitations","description":"Pending invitations addressed to the session's verified email.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyInvitationList"}}},"description":"Pending invitations, newest first.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List my invitations","tags":["Invitations"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/scopes":{"get":{"operationId":"getScopes","description":"See which scopes can be granted to API keys.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScopeList"}}},"description":"Issuable scope catalog.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List scopes","tags":["API Keys"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]},{}]}},"/v1/earn/vaults":{"get":{"operationId":"getEarnVaults","parameters":[{"in":"query","name":"asset","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Only include vaults accepting this asset address."},{"in":"query","name":"capability","schema":{"type":"array","items":{"type":"string","enum":["asyncRedeem","boundedRedeem","deposit","exactWithdraw","inKindDeposit","privateRouting","redeem","routerSwaps"]},"examples":[["asyncRedeem","boundedRedeem","deposit","exactWithdraw","inKindDeposit","privateRouting","redeem","routerSwaps"]]},"description":"Comma-separated capabilities that every returned vault must support."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"engine.type","schema":{"type":"string","enum":["erc4626","veda"],"examples":["erc4626"]},"description":"Only include vaults with this inferred engine type."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["access","apy","capabilities","token.logoUri","tvl","zone","zones"]},"examples":[["access","apy","capabilities","token.logoUri","tvl","zone","zones"]]},"description":"Comma-separated vault fields to include, such as `apy,tvl`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"apy.window","schema":{"examples":["7d"],"type":"string","enum":["1h","1d","7d","30d"]},"description":"Rate measurement window. Selecting a window includes `apy`, which measures `7d` on its own."}],"description":"Lists compatible earn vaults discovered from deployment events and resolved from current chain state.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"access":{"description":"Vault share-token access, when requested.","type":"object","properties":{"status":{"type":"string","enum":["allowlisted","open"],"description":"Vault share-token access status.","examples":["open"]}},"required":["status"],"additionalProperties":false},"apy":{"description":"Annualized share-price growth over the selected window, when requested via `include=apy` or by selecting `apy.window`. Null when the rate could not be measured: the vault predates the window, a boundary or historical quote is unavailable, the engine changed inside the window, or the growth is too extreme to annualize as a ratio.","anyOf":[{"type":"object","properties":{"asOf":{"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":"UTC instant the rate was measured to, rounded to a 15-minute bucket.","examples":["2026-07-21T09:00:00.000Z"]},"methodology":{"type":"string","const":"share-price-growth-annualized:v1","description":"Identifier of the calculation that produced this rate.","examples":["share-price-growth-annualized:v1"]},"net":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$","description":"Annualized fee-aware share-price growth, as a decimal ratio.","examples":["0.041200"]},"window":{"type":"string","enum":["1h","1d","7d","30d"],"description":"Window this rate covers.","examples":["7d"]}},"required":["asOf","methodology","net","window"],"additionalProperties":false,"description":"Annualized share-price growth over one measurement window."},{"type":"null"}]},"assetToken":{"$ref":"#/components/schemas/TokenReference"},"capabilities":{"description":"Vault capabilities, when requested.","type":"object","properties":{"asyncRedeem":{"type":"boolean","description":"Whether queued redemptions are supported.","examples":[false]},"boundedRedeem":{"type":"boolean","description":"Whether redemption accepts a minimum asset bound.","examples":[true]},"deposit":{"type":"boolean","description":"Whether asset deposits are supported.","examples":[true]},"exactWithdraw":{"type":"boolean","description":"Whether exact asset withdrawals are supported.","examples":[true]},"inKindDeposit":{"type":"boolean","description":"Whether venue-share deposits are supported.","examples":[true]},"privateRouting":{"type":"boolean","description":"Whether private routing is supported.","examples":[false]},"redeem":{"type":"boolean","description":"Whether immediate redemptions are supported.","examples":[true]},"routerSwaps":{"type":"boolean","description":"Whether router token swaps are supported.","examples":[false]}},"required":["asyncRedeem","boundedRedeem","deposit","exactWithdraw","inKindDeposit","privateRouting","redeem","routerSwaps"],"additionalProperties":false},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curated vault description, or null when the vault is not verified.","examples":["deelUSD deposited into the canonical Tempo Earn deployment."]},"engine":{"type":"object","properties":{"address":{"description":"Current vault engine contract address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"type":{"anyOf":[{"type":"string","enum":["erc4626","veda"],"description":"Inferred vault engine type.","examples":["erc4626"]},{"type":"null"}],"description":"Inferred engine type, or null when it is unknown."},"venue":{"anyOf":[{"description":"Yield venue contract bound to the engine.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}],"description":"Yield venue, or null when the engine does not expose one."}},"required":["address","type","venue"],"additionalProperties":false,"description":"Current vault engine."},"id":{"description":"Stable vault id, equal to the lowercase vault address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"instantLiquidity":{"anyOf":[{"type":"string","pattern":"^\\d+$","description":"Assets the venue would release right now, in asset base units.","examples":["1000000"]},{"type":"null"}],"description":"Assets the venue would release right now, capped at the vault backing, in asset base units. Null when the engine interface cannot report a reliable number."},"instantLiquidityValue":{"description":"Instant liquidity valued in USD, when requested via `include=tvl`, or null when liquidity is unavailable or the asset has no priced display currency.","anyOf":[{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Value in base units at `decimals` precision.","examples":["125288750000"]},"currency":{"type":"string","description":"Display currency of this value.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `amount` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Value rendered in whole units.","examples":["125288.75"]}},"required":["amount","currency","decimals","formatted"],"additionalProperties":false},{"type":"null"}]},"label":{"type":"string","description":"Vault display label.","examples":["deelUSD Earn"]},"sharePrice":{"anyOf":[{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Value in base units at `decimals` precision.","examples":["125288750000"]},"currency":{"type":"string","description":"Display currency of this value.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `amount` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Value rendered in whole units.","examples":["125288.75"]}},"required":["amount","currency","decimals","formatted"],"additionalProperties":false},{"type":"null"}],"description":"Assets returned for one whole earn share, in the asset display currency, or null when the engine cannot quote an exit."},"shareToken":{"$ref":"#/components/schemas/TokenReference"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curated URL slug, or null when the vault is not verified.","examples":["deelusd-earn"]},"state":{"type":"object","properties":{"depositsPaused":{"type":"boolean","description":"Whether new deposits are paused.","examples":[false]},"engineShares":{"type":"string","pattern":"^\\d+$","description":"Venue shares held for the vault.","examples":["1000000"]},"feesActive":{"type":"boolean","description":"Whether fees are configured and not emergency-disabled.","examples":[true]},"isAccountingAligned":{"type":"boolean","description":"Whether Earn share supply matches its asset backing.","examples":[true]},"openRedeemRequestCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Queued redemptions still awaiting settlement.","examples":[0]},"totalAssets":{"type":"string","pattern":"^\\d+$","description":"Asset value of the active backing.","examples":["1000000"]},"totalEarnShares":{"type":"string","pattern":"^\\d+$","description":"Active Earn share supply.","examples":["1000000"]}},"required":["depositsPaused","engineShares","feesActive","isAccountingAligned","openRedeemRequestCount","totalAssets","totalEarnShares"],"additionalProperties":false,"description":"Live vault accounting state."},"tvl":{"description":"Total assets valued in USD, when requested via `include=tvl`, or null when the asset has no priced display currency.","anyOf":[{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Value in base units at `decimals` precision.","examples":["125288750000"]},"currency":{"type":"string","description":"Display currency of this value.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `amount` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Value rendered in whole units.","examples":["125288.75"]}},"required":["amount","currency","decimals","formatted"],"additionalProperties":false},{"type":"null"}]},"vaultAddress":{"description":"Earn vault contract address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"verified":{"type":"boolean","description":"Whether this vault is in the curated earn registry.","examples":[true]},"zone":{"description":"Curated private Zone route, when requested, or null when absent.","anyOf":[{"type":"object","properties":{"chainId":{"description":"Private Zone chain id.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[421700001]},"inputTokens":{"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tokens accepted by private deposits.","examples":[["0x20c0000000000000000000006fd9a167923ba194"]]},"name":{"type":"string","description":"Private Zone name.","examples":["zone-mainnet-internal"]},"outputTokens":{"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tokens supported by private redemptions.","examples":[["0x20c0000000000000000000006fd9a167923ba194"]]}},"required":["chainId","inputTokens","name","outputTokens"],"additionalProperties":false,"description":"Private Zone route configured for a verified vault."},{"type":"null"}]},"zones":{"description":"Curated private Zone routes, when requested.","type":"array","items":{"type":"object","properties":{"chainId":{"description":"Private Zone chain id.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[421700001]},"deploymentBlock":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Parent-chain block that deployed the Earn router.","examples":[35816964]},"earnRouter":{"description":"Parent-chain router for this Zone and Earn vault.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"inputTokens":{"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tokens accepted by private deposits.","examples":[["0x20c0000000000000000000006fd9a167923ba194"]]},"name":{"type":"string","description":"Private Zone name.","examples":["zone-mainnet-internal"]},"outputTokens":{"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tokens returned by private redemptions.","examples":[["0x20c0000000000000000000006fd9a167923ba194"]]}},"required":["chainId","deploymentBlock","earnRouter","inputTokens","name","outputTokens"],"additionalProperties":false,"description":"Verified Earn route through one private Zone."},"examples":[[{"chainId":421700001,"deploymentBlock":35816964,"earnRouter":"0x8117e0ba6239b9695f780deb010f72a2fa4bdfb6","inputTokens":["0x20c0000000000000000000006fd9a167923ba194"],"name":"zone-mainnet-internal","outputTokens":["0x20c0000000000000000000006fd9a167923ba194"]}]]}},"required":["assetToken","description","engine","id","instantLiquidity","label","sharePrice","shareToken","slug","state","vaultAddress","verified"],"additionalProperties":false,"description":"A compatible earn vault resolved from chain state."},"description":"Compatible deployed earn vaults in deployment order."},"meta":{"type":"object","properties":{"valuation":{"$ref":"#/components/schemas/ValuationPricing"}},"description":"Rate provenance for valued fields."},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"additionalProperties":false,"description":"A page of compatible deployed earn vaults."}}},"description":"A page of compatible deployed earn vaults.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"},"example":{"error":{"code":"query_invalid","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read earn deployment or vault data."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read earn deployment or vault data."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List vaults","tags":["Earn"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/exchange/swaps":{"get":{"operationId":"getSwaps","parameters":[{"in":"query","name":"blockNumber.from","schema":{"examples":[23456789],"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Only include swaps at or after this block number."},{"in":"query","name":"blockNumber.to","schema":{"examples":[23456999],"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Only include swaps at or before this block number."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["token.logoUri","token.verified"]},"examples":[["token.logoUri","token.verified"]]},"description":"Comma-separated token fields to include, such as `token.logoUri,token.verified`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"maker","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Only include swaps that filled against an order owned by this maker address."},{"in":"query","name":"order","schema":{"default":"desc","examples":["desc"],"type":"string","enum":["asc","desc"]},"description":"Sort order: `desc` for descending (the default), or `asc` for ascending."},{"in":"query","name":"participant","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Only include swaps where this address participated as the taker or as a maker whose order was filled."},{"in":"query","name":"taker","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Only include swaps initiated by this taker address."},{"in":"query","name":"timestamp.from","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","examples":["2024-01-01T00:00:00Z"]},"description":"Only include swaps at or after this ISO 8601 timestamp."},{"in":"query","name":"timestamp.to","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","examples":["2024-12-31T23:59:59Z"]},"description":"Only include swaps at or before this ISO 8601 timestamp."},{"in":"query","name":"transactionHash","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"description":"Only include swaps included in this transaction hash."},{"in":"query","name":"valuation.currency","schema":{"type":"string","pattern":"^[a-zA-Z]{3}$","examples":["AUD"]},"description":"Currency to denominate values in (case-insensitive, e.g. `AUD`). Must be priced by the configured FX oracle."}],"description":"List recent swaps on Tempo’s built-in stablecoin exchange. A swap trades one token for another and may contain multiple maker-order fills.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeSwapList"}}},"description":"A page of swaps from Tempo’s built-in stablecoin exchange.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The indexer or Tempo RPC could not serve the exchange data right now."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The indexer or Tempo RPC could not serve the exchange data right now."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List swaps","tags":["Exchange"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/exchange/pairs":{"get":{"operationId":"getPairs","parameters":[{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["tokens","totalCount"]},"examples":[["tokens","totalCount"]]},"description":"Comma-separated optional resources to embed, e.g. `tokens,totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"order","schema":{"default":"desc","examples":["desc"],"type":"string","enum":["asc","desc"]},"description":"Sort order: `desc` for descending (the default), or `asc` for ascending."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."},{"in":"query","name":"sort","schema":{"default":"created","examples":["created"],"type":"string","enum":["created","liquidity"]},"description":"Sort key: `created` orders by when the pair was created, while `liquidity` ranks by the DEX-held base-token balance as a practical liquidity signal."}],"description":"List trading pairs available on Tempo’s built-in stablecoin exchange.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangePairList"}}},"description":"A page of exchange trading pairs.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The indexer could not serve the exchange data right now."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The indexer could not serve the exchange data right now."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List pairs","tags":["Exchange"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/exchange/orders":{"get":{"operationId":"getOrders","parameters":[{"in":"query","name":"base","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"description":"Only include orders for the pair with this base token. The quote token is determined onchain from the base token, so `base` alone selects the pair; returns 404 if no pair exists."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["tokens","totalCount"]},"examples":[["tokens","totalCount"]]},"description":"Comma-separated optional resources to embed, e.g. `tokens,totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"maker","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Only include orders placed by this maker address."},{"in":"query","name":"order","schema":{"default":"desc","examples":["desc"],"type":"string","enum":["asc","desc"]},"description":"Sort order: `desc` for descending (the default), or `asc` for ascending."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."},{"in":"query","name":"side","schema":{"examples":["bid"],"type":"string","enum":["bid","ask"]},"description":"Limit results to one side of the orderbook: `bid` orders pay quote for base, while `ask` orders sell base for quote."},{"in":"query","name":"sort","schema":{"default":"tick","examples":["tick"],"type":"string","enum":["tick","time"]},"description":"Sort key: `tick` orders by price in standard book order, while `time` orders by block number and log index."}],"description":"List resting maker orders on Tempo’s built-in stablecoin exchange. These are open orders waiting in the orderbook.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeOrderList"}}},"description":"A page of resting maker orders.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairNotFoundError"},"example":{"error":{"code":"pair_not_found","message":"No exchange pair was found for the requested `base` filter."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No exchange pair was found for the requested `base` filter."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The indexer could not serve the exchange data right now."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The indexer could not serve the exchange data right now."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List orders","tags":["Exchange"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/fee-amm/pools":{"get":{"operationId":"getFeeAmmPools","parameters":[{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["token.logoUri","token.verified"]},"examples":[["token.logoUri","token.verified"]]},"description":"Comma-separated token fields to include, such as `token.logoUri,token.verified`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."}],"description":"Lists Fee AMM pools by mint activity, showing which stablecoin fee conversions have the most liquidity activity.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeeAmmPoolList"}}},"description":"List of Fee AMM pools.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Tempo RPC or the upstream indexer could not complete the request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Tempo RPC or the upstream indexer could not complete the request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List pools","tags":["Fee AMM"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/fee-amm/mints":{"get":{"operationId":"getFeeAmmMints","parameters":[{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["totalCount"]},"examples":[["totalCount"]]},"description":"Comma-separated optional resources to embed, e.g. `totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"order","schema":{"default":"desc","examples":["desc"],"type":"string","enum":["asc","desc"]},"description":"Sort order: `desc` for descending (the default), or `asc` for ascending."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."},{"in":"query","name":"userToken","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"description":"Only include mints for pools where users paid fees with this token."},{"in":"query","name":"validatorToken","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"description":"Only include mints for pools where validators receive this token."}],"description":"Lists liquidity mints into Fee AMM pools.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeeAmmMintList"}}},"description":"Page of Fee AMM liquidity mints.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The upstream Tempo indexer could not complete the request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The upstream Tempo indexer could not complete the request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List mints","tags":["Fee AMM"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/transactions/receipts":{"get":{"operationId":"getReceipts","parameters":[{"in":"query","name":"address","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Filter to receipts whose transaction has this address as sender or recipient."},{"in":"query","name":"blockNumber.from","schema":{"examples":[23456789],"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Only include receipts at or after this block number."},{"in":"query","name":"blockNumber.to","schema":{"examples":[23456999],"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Only include receipts at or before this block number."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"feePayer","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Filter to receipts whose transaction fee was paid by this address."},{"in":"query","name":"feeToken","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"description":"Filter to receipts whose transaction fee was paid in this token address."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["feeToken.logoUri","feeToken.verified","totalCount"]},"examples":[["feeToken.logoUri","feeToken.verified","totalCount"]]},"description":"Comma-separated resources to include, such as `feeToken.logoUri,feeToken.verified,totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"order","schema":{"default":"desc","examples":["desc"],"type":"string","enum":["asc","desc"]},"description":"Sort order: `desc` for descending (the default), or `asc` for ascending."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."},{"in":"query","name":"recipient","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Filter to receipts for transactions sent to this recipient address."},{"in":"query","name":"sender","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Filter to receipts for transactions sent by this sender address."},{"in":"query","name":"status","schema":{"examples":["success"],"type":"string","enum":["success","reverted"]},"description":"Filter to receipts with this execution status."},{"in":"query","name":"timestamp.from","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","examples":["2024-01-01T00:00:00Z"]},"description":"Only include receipts at or after this ISO 8601 timestamp."},{"in":"query","name":"timestamp.to","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","examples":["2024-12-31T23:59:59Z"]},"description":"Only include receipts at or before this ISO 8601 timestamp."},{"in":"query","name":"valuation.currency","schema":{"type":"string","pattern":"^[a-zA-Z]{3}$","examples":["AUD"]},"description":"Currency to denominate values in (case-insensitive, e.g. `AUD`). Must be priced by the configured FX oracle."}],"description":"List transaction receipts across Tempo, with filters for addresses, blocks, timestamps, fees, and status.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionReceiptList"}}},"description":"A page of transaction receipts.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read receipt or token data from an upstream service."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read receipt or token data from an upstream service."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List transaction receipts","tags":["Transactions"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/verified-tokens/currencies":{"get":{"operationId":"getVerifiedTokenCurrencies","parameters":[{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."}],"description":"Returns the distinct display currencies represented by the curated verified-token list.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifiedTokenCurrencyList"}}},"description":"The distinct currencies used by verified tokens.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The verified-token store could not complete the request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The verified-token store could not complete the request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List verified currencies","tags":["Verified Tokens"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/gecko/{chainId}/pairs":{"get":{"operationId":"coingeckoPairs","parameters":[{"in":"path","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"required":true,"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`)."},{"in":"query","name":"limit","schema":{"default":50,"examples":[50],"type":"integer","minimum":1,"maximum":500},"description":"Maximum number of pairs to return. Defaults to 50 and is capped at 500."}],"description":"Lists Tempo stablecoin DEX trading pairs in GeckoTerminal format.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinGeckoPairsResponse"}}},"description":"Trading pairs in GeckoTerminal format.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The chain id or `limit` query parameter is invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The chain id or `limit` query parameter is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Tempo RPC or the upstream indexer could not complete the request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Tempo RPC or the upstream indexer could not complete the request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List trading pairs","tags":["CoinGecko"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/gecko/{chainId}/events":{"get":{"operationId":"coingeckoEvents","parameters":[{"in":"path","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"required":true,"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`)."},{"in":"query","name":"fromBlock","schema":{"examples":[23456789],"type":"integer","minimum":0,"maximum":9007199254740991},"description":"First block to include. Defaults to `toBlock` minus 1000."},{"in":"query","name":"toBlock","schema":{"examples":[23456999],"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Last block to include. Defaults to the latest indexed block."}],"description":"Returns Tempo DEX swap events over a block range in GeckoTerminal format.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinGeckoEventsResponse"}}},"description":"Swap events in the requested block range.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The chain id or requested block range is invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The chain id or requested block range is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"not_found","message":"No indexed block was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No indexed block was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The upstream Tempo indexer could not complete the request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The upstream Tempo indexer could not complete the request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List swap events","tags":["CoinGecko"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/funding/quotes":{"get":{"operationId":"quoteFunding","parameters":[{"in":"query","name":"destinationToken","schema":{"examples":["usdc.e"],"type":"string"},"description":"Tempo destination token symbol, address, or token key. Defaults to USDC.e."},{"in":"query","name":"provider","schema":{"examples":["relay"],"type":"string","minLength":1},"description":"Only request a quote from this provider. Use an id returned by the funding providers endpoint, or omit it to query every available provider."},{"in":"query","name":"sourceAmount","schema":{"type":"string","pattern":"^(?=.*[1-9])\\d+(\\.\\d+)?$","examples":["1000000"]},"required":true,"description":"Positive source token amount. Base units by default, so 1 USDC is `1000000`."},{"in":"query","name":"sourceAmountUnits","schema":{"default":"baseUnits","examples":["baseUnits","decimal"],"type":"string","enum":["baseUnits","decimal"]},"description":"Whether `sourceAmount` is base units or a human-readable decimal."},{"in":"query","name":"sourceChain","schema":{"type":"string","minLength":1,"examples":["base","eip155:8453"]},"required":true,"description":"Source chain alias or stable id, such as `base`, `solana`, or `eip155:8453`."},{"in":"query","name":"sourceToken","schema":{"type":"string","minLength":1,"examples":["usdc","0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"required":true,"description":"Source token symbol, contract address, or Tempo token key. Lookup is scoped to `sourceChain`; non-EVM addresses are case-sensitive. An unknown token returns an empty list."}],"description":"Returns live quotes for transferring stablecoins to Tempo.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingQuoteList"},"example":{"data":[{"destinationAmount":{"baseUnits":"979295","currency":"USD","decimals":6,"formatted":"0.979295"},"destinationAmountMin":{"baseUnits":"939242","currency":"USD","decimals":6,"formatted":"0.939242"},"destinationChain":{"addressFormat":"hex","id":"eip155:4217","kind":"evm","name":"Tempo"},"destinationToken":{"address":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","decimals":6,"name":"Bridged USDC (Stargate)","standard":"TIP-20","symbol":"USDC.e","tokenKey":"eip155:4217/erc20:0x20c000000000000000000000b9537d11c60e8b50","verified":true},"id":"base-usdc-tempo-usdce-relay","provider":{"id":"relay","name":"Relay"},"quality":{"estimatedSeconds":1,"liquiditySource":"providerQuote","sourceDetail":"relay:quote-v2","tier":"liquid"},"quote":{"sampledAt":"2026-01-01T00:00:00.000Z"},"sourceAmount":{"baseUnits":"1000000","currency":"USD","decimals":6,"formatted":"1"},"sourceChain":{"addressFormat":"hex","id":"eip155:8453","kind":"evm","name":"Base"},"sourceToken":{"address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","currency":"USD","decimals":6,"name":"USD Coin","standard":"ERC-20","symbol":"USDC","tokenKey":"eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","verified":true}}]}}},"description":"Live funding quotes. An empty list means no provider returned a quote.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"No quote succeeded and at least one matching provider failed unexpectedly."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No quote succeeded and at least one matching provider failed unexpectedly."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get quotes","tags":["Quotes"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/funding/chains":{"get":{"operationId":"getFundingChains","description":"Lists supported source chains and tokens.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingChainList"},"example":{"data":[{"addressFormat":"hex","id":"eip155:8453","kind":"evm","name":"Base","tokens":[{"address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","currency":"USD","decimals":6,"name":"USD Coin","standard":"ERC-20","symbol":"USDC","tokenKey":"eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","verified":true}]}]}}},"description":"Supported source chains and stablecoins.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get chains","tags":["Chains"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/funding/providers":{"get":{"operationId":"getFundingProviders","description":"Lists available transfer providers.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingProviderList"},"example":{"data":[{"id":"relay","name":"Relay"}]}}},"description":"Funding quote providers supported by Tempo.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get providers","tags":["Providers"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/funding/deposit-addresses":{"post":{"operationId":"createFundingDepositAddress","parameters":[{"in":"header","name":"idempotency-key","schema":{"type":"string","minLength":1,"examples":["funding_01k1c5j8q8p0be6j5v9m6d1e4r"]},"required":true,"description":"Opaque retry key scoped to the API key. Matching requests replay successful responses for 24 hours; changed input conflicts, in-flight requests block, and failed attempts release the key."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFundingDepositAddressRequest"}}}},"description":"Creates or returns a reusable deposit address for funding a Tempo account.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFundingDepositAddressResponse"},"example":{"address":"TJRabPrwbZy45sbavfcjinPJC18kjpRTv8","createdAt":"2026-08-04T00:00:00.000Z","destinationChain":{"addressFormat":"hex","id":"eip155:4217","kind":"evm","name":"Tempo"},"destinationToken":{"address":"0x20c00000000000000000000014f22ca97301eb73","currency":"USD","decimals":6,"name":"USDT0","standard":"TIP-20","symbol":"USDT0","tokenKey":"eip155:4217/erc20:0x20c00000000000000000000014f22ca97301eb73","verified":true},"id":"fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx","provider":{"id":"relay","name":"Relay"},"recipient":"0x1111111111111111111111111111111111111111","refundAddress":"TJRabPrwbZy45sbavfcjinPJC18kjpRTv8","sourceChain":{"addressFormat":"base58check","id":"tron:0x2b6653dc","kind":"tron","name":"Tron"},"sourceToken":{"address":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","currency":"USD","decimals":6,"name":"Tether USD","standard":"TRC-20","symbol":"USDT","tokenKey":"tron:0x2b6653dc/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","verified":true},"status":"active","subsidize":false,"updatedAt":"2026-08-04T00:00:00.000Z","destinationAmount":{"baseUnits":"1000000","currency":"USD","decimals":6,"formatted":"1"},"destinationAmountMin":{"baseUnits":"1000000","currency":"USD","decimals":6,"formatted":"1"},"fees":[],"quote":{"sampledAt":"2026-08-04T00:00:00.000Z"},"sourceAmount":{"baseUnits":"1000000","currency":"USD","decimals":6,"formatted":"1"}}}},"description":"The created or matching reusable funding deposit address and quote.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrIdempotencyKeyRequiredError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepositAddressNotAvailableError"},"example":{"error":{"code":"deposit_address_not_available","message":"No provider can provision the requested reusable address route."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No provider can provision the requested reusable address route."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdempotencyConflictOrIdempotencyInProgressError"},"example":{"error":{"code":"idempotency_conflict","message":"The Idempotency-Key conflicts with an existing or in-flight request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The Idempotency-Key conflicts with an existing or in-flight request."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The selected provider could not provision the address."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The selected provider could not provision the address."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create deposit address","tags":["Deposit Addresses"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["funding:write"]},"get":{"operationId":"listFundingDepositAddresses","parameters":[{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."}],"description":"Lists reusable funding deposit addresses, newest first.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingDepositAddressList"},"example":{"data":[{"address":"TJRabPrwbZy45sbavfcjinPJC18kjpRTv8","createdAt":"2026-08-04T00:00:00.000Z","destinationChain":{"addressFormat":"hex","id":"eip155:4217","kind":"evm","name":"Tempo"},"destinationToken":{"address":"0x20c00000000000000000000014f22ca97301eb73","currency":"USD","decimals":6,"name":"USDT0","standard":"TIP-20","symbol":"USDT0","tokenKey":"eip155:4217/erc20:0x20c00000000000000000000014f22ca97301eb73","verified":true},"id":"fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx","provider":{"id":"relay","name":"Relay"},"recipient":"0x1111111111111111111111111111111111111111","refundAddress":"TJRabPrwbZy45sbavfcjinPJC18kjpRTv8","sourceChain":{"addressFormat":"base58check","id":"tron:0x2b6653dc","kind":"tron","name":"Tron"},"sourceToken":{"address":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","currency":"USD","decimals":6,"name":"Tether USD","standard":"TRC-20","symbol":"USDT","tokenKey":"tron:0x2b6653dc/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","verified":true},"status":"active","subsidize":false,"updatedAt":"2026-08-04T00:00:00.000Z"}],"nextCursor":null}}},"description":"A page of reusable funding deposit addresses.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List deposit addresses","tags":["Deposit Addresses"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["funding:read"]}},"/v1/addresses/{address}/activities":{"get":{"operationId":"getAddressActivities","parameters":[{"in":"path","name":"address","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"required":true,"description":"Account address whose activity you want to list."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"group","schema":{"type":"boolean","examples":[true]},"description":"Set to `true` to fold consecutive items signed by the same access key on the same UTC day into `group` entries. Defaults to `false`, which returns every item separately."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["token.logoUri","token.verified","zones"]},"examples":[["token.logoUri","token.verified","zones"]]},"description":"Comma-separated activity options. `zones` combines the selected parent chain with every readable Zone."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"logs","schema":{"type":"boolean","examples":[true]},"description":"Set to `true` to attach each item’s full transaction log set (decoded when possible) as a top-level `events` array, so no co-located log is hidden. Defaults to `false`. `unknown` items always include it."},{"in":"query","name":"valuation.currency","schema":{"type":"string","pattern":"^[a-zA-Z]{3}$","examples":["AUD"]},"description":"Currency to denominate values in (case-insensitive, e.g. `AUD`). Must be priced by the configured FX oracle."}],"description":"Get a human-readable feed of what an address has been doing onchain, including payments sent and received, swaps, approvals, and more.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressActivityList"}}},"description":"A page of address activity entries.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressInvalidOrApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Tempo could not read activity or token data from an upstream service."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Tempo could not read activity or token data from an upstream service."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List address activities","tags":["Activities"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/addresses/{address}/balances":{"get":{"operationId":"getAddressBalances","parameters":[{"in":"path","name":"address","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"required":true,"description":"The account address whose token balances you want to list."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"currency","schema":{"examples":["EUR","USD"],"type":"string"},"description":"Only include verified tokens denominated in this currency (e.g. `USD`). Case-insensitive. Implies `verified=true` because the balances snapshot does not store currency for unverified tokens. Unknown currency strings are accepted but match no rows."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"feeEligible","schema":{"type":"boolean","examples":[true]},"description":"When `true`, include only tokens eligible to pay transaction fees on Tempo: verified tokens that have a Fee AMM pool, plus the default fee token (`pathUSD`). Use this to avoid a second `/fee-amm/pools` query when you only want fee-payable holdings."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["totalCount"]},"examples":[["totalCount"]]},"description":"Comma-separated optional resources to embed, e.g. `totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."},{"in":"query","name":"valuation.currency","schema":{"type":"string","pattern":"^[a-zA-Z]{3}$","examples":["AUD"]},"description":"When present, include each holding’s nominal value in this denomination. Case-insensitive and must be priced by the configured FX oracle."},{"in":"query","name":"verified","schema":{"type":"boolean","examples":[true]},"description":"When `true`, include only tokens from Tempo’s curated verified token list."}],"description":"Lists how much of each TIP-20 token an account holds, ordered from largest to smallest balance. Amounts are returned in raw base units and human-readable form. Pass `valuation.currency` to include nominal values.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BalanceList"}}},"description":"A page of token balances for this account.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressInvalidOrApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read balance or token data from an upstream service."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read balance or token data from an upstream service."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List address balances","tags":["Balances"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/earn/vaults/verified":{"get":{"operationId":"getVerifiedEarnVaults","parameters":[{"in":"query","name":"asset","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Only include vaults accepting this asset address."},{"in":"query","name":"capability","schema":{"type":"array","items":{"type":"string","enum":["asyncRedeem","boundedRedeem","deposit","exactWithdraw","inKindDeposit","privateRouting","redeem","routerSwaps"]},"examples":[["asyncRedeem","boundedRedeem","deposit","exactWithdraw","inKindDeposit","privateRouting","redeem","routerSwaps"]]},"description":"Comma-separated capabilities that every returned vault must support."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"engine.type","schema":{"type":"string","enum":["erc4626","veda"],"examples":["erc4626"]},"description":"Only include vaults with this inferred engine type."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["access","apy","capabilities","token.logoUri","tvl","zone","zones"]},"examples":[["access","apy","capabilities","token.logoUri","tvl","zone","zones"]]},"description":"Comma-separated vault fields to include, such as `apy,tvl`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"apy.window","schema":{"examples":["7d"],"type":"string","enum":["1h","1d","7d","30d"]},"description":"Rate measurement window. Selecting a window includes `apy`, which measures `7d` on its own."}],"description":"Lists registry-curated earn vaults after resolving their current onchain configuration.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"access":{"description":"Vault share-token access, when requested.","type":"object","properties":{"status":{"type":"string","enum":["allowlisted","open"],"description":"Vault share-token access status.","examples":["open"]}},"required":["status"],"additionalProperties":false},"apy":{"description":"Annualized share-price growth over the selected window, when requested via `include=apy` or by selecting `apy.window`. Null when the rate could not be measured: the vault predates the window, a boundary or historical quote is unavailable, the engine changed inside the window, or the growth is too extreme to annualize as a ratio.","anyOf":[{"type":"object","properties":{"asOf":{"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":"UTC instant the rate was measured to, rounded to a 15-minute bucket.","examples":["2026-07-21T09:00:00.000Z"]},"methodology":{"type":"string","const":"share-price-growth-annualized:v1","description":"Identifier of the calculation that produced this rate.","examples":["share-price-growth-annualized:v1"]},"net":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$","description":"Annualized fee-aware share-price growth, as a decimal ratio.","examples":["0.041200"]},"window":{"type":"string","enum":["1h","1d","7d","30d"],"description":"Window this rate covers.","examples":["7d"]}},"required":["asOf","methodology","net","window"],"additionalProperties":false,"description":"Annualized share-price growth over one measurement window."},{"type":"null"}]},"assetToken":{"$ref":"#/components/schemas/TokenReference"},"capabilities":{"description":"Vault capabilities, when requested.","type":"object","properties":{"asyncRedeem":{"type":"boolean","description":"Whether queued redemptions are supported.","examples":[false]},"boundedRedeem":{"type":"boolean","description":"Whether redemption accepts a minimum asset bound.","examples":[true]},"deposit":{"type":"boolean","description":"Whether asset deposits are supported.","examples":[true]},"exactWithdraw":{"type":"boolean","description":"Whether exact asset withdrawals are supported.","examples":[true]},"inKindDeposit":{"type":"boolean","description":"Whether venue-share deposits are supported.","examples":[true]},"privateRouting":{"type":"boolean","description":"Whether private routing is supported.","examples":[false]},"redeem":{"type":"boolean","description":"Whether immediate redemptions are supported.","examples":[true]},"routerSwaps":{"type":"boolean","description":"Whether router token swaps are supported.","examples":[false]}},"required":["asyncRedeem","boundedRedeem","deposit","exactWithdraw","inKindDeposit","privateRouting","redeem","routerSwaps"],"additionalProperties":false},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curated vault description, or null when the vault is not verified.","examples":["deelUSD deposited into the canonical Tempo Earn deployment."]},"engine":{"type":"object","properties":{"address":{"description":"Current vault engine contract address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"type":{"type":"string","enum":["erc4626","veda"],"description":"Inferred vault engine type.","examples":["erc4626"]},"venue":{"anyOf":[{"description":"Yield venue contract bound to the engine.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}],"description":"Yield venue, or null when the engine does not expose one."}},"required":["address","type","venue"],"additionalProperties":false},"id":{"description":"Stable vault id, equal to the lowercase vault address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"instantLiquidity":{"anyOf":[{"type":"string","pattern":"^\\d+$","description":"Assets the venue would release right now, in asset base units.","examples":["1000000"]},{"type":"null"}],"description":"Assets the venue would release right now, capped at the vault backing, in asset base units. Null when the engine interface cannot report a reliable number."},"instantLiquidityValue":{"description":"Instant liquidity valued in USD, when requested via `include=tvl`, or null when liquidity is unavailable or the asset has no priced display currency.","anyOf":[{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Value in base units at `decimals` precision.","examples":["125288750000"]},"currency":{"type":"string","description":"Display currency of this value.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `amount` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Value rendered in whole units.","examples":["125288.75"]}},"required":["amount","currency","decimals","formatted"],"additionalProperties":false},{"type":"null"}]},"label":{"type":"string","description":"Vault display label.","examples":["deelUSD Earn"]},"sharePrice":{"anyOf":[{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Value in base units at `decimals` precision.","examples":["125288750000"]},"currency":{"type":"string","description":"Display currency of this value.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `amount` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Value rendered in whole units.","examples":["125288.75"]}},"required":["amount","currency","decimals","formatted"],"additionalProperties":false},{"type":"null"}],"description":"Assets returned for one whole earn share, in the asset display currency, or null when the engine cannot quote an exit."},"shareToken":{"$ref":"#/components/schemas/TokenReference"},"slug":{"type":"string","description":"Stable curated vault slug.","examples":["btpathusd-earn-h8k2m4n6"]},"state":{"type":"object","properties":{"depositsPaused":{"type":"boolean","description":"Whether new deposits are paused.","examples":[false]},"engineShares":{"type":"string","pattern":"^\\d+$","description":"Venue shares held for the vault.","examples":["1000000"]},"feesActive":{"type":"boolean","description":"Whether fees are configured and not emergency-disabled.","examples":[true]},"isAccountingAligned":{"type":"boolean","description":"Whether Earn share supply matches its asset backing.","examples":[true]},"openRedeemRequestCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Queued redemptions still awaiting settlement.","examples":[0]},"totalAssets":{"type":"string","pattern":"^\\d+$","description":"Asset value of the active backing.","examples":["1000000"]},"totalEarnShares":{"type":"string","pattern":"^\\d+$","description":"Active Earn share supply.","examples":["1000000"]}},"required":["depositsPaused","engineShares","feesActive","isAccountingAligned","openRedeemRequestCount","totalAssets","totalEarnShares"],"additionalProperties":false,"description":"Live vault accounting state."},"tvl":{"description":"Total assets valued in USD, when requested via `include=tvl`, or null when the asset has no priced display currency.","anyOf":[{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Value in base units at `decimals` precision.","examples":["125288750000"]},"currency":{"type":"string","description":"Display currency of this value.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `amount` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Value rendered in whole units.","examples":["125288.75"]}},"required":["amount","currency","decimals","formatted"],"additionalProperties":false},{"type":"null"}]},"vaultAddress":{"description":"Earn vault contract address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"verified":{"type":"boolean","const":true,"description":"This vault is in the curated earn registry.","examples":[true]},"zone":{"description":"Curated private Zone route, when requested, or null when absent.","anyOf":[{"type":"object","properties":{"chainId":{"description":"Private Zone chain id.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[421700001]},"inputTokens":{"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tokens accepted by private deposits.","examples":[["0x20c0000000000000000000006fd9a167923ba194"]]},"name":{"type":"string","description":"Private Zone name.","examples":["zone-mainnet-internal"]},"outputTokens":{"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tokens supported by private redemptions.","examples":[["0x20c0000000000000000000006fd9a167923ba194"]]}},"required":["chainId","inputTokens","name","outputTokens"],"additionalProperties":false,"description":"Private Zone route configured for a verified vault."},{"type":"null"}]},"zones":{"description":"Curated private Zone routes, when requested.","type":"array","items":{"type":"object","properties":{"chainId":{"description":"Private Zone chain id.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[421700001]},"deploymentBlock":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Parent-chain block that deployed the Earn router.","examples":[35816964]},"earnRouter":{"description":"Parent-chain router for this Zone and Earn vault.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"inputTokens":{"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tokens accepted by private deposits.","examples":[["0x20c0000000000000000000006fd9a167923ba194"]]},"name":{"type":"string","description":"Private Zone name.","examples":["zone-mainnet-internal"]},"outputTokens":{"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tokens returned by private redemptions.","examples":[["0x20c0000000000000000000006fd9a167923ba194"]]}},"required":["chainId","deploymentBlock","earnRouter","inputTokens","name","outputTokens"],"additionalProperties":false,"description":"Verified Earn route through one private Zone."},"examples":[[{"chainId":421700001,"deploymentBlock":35816964,"earnRouter":"0x8117e0ba6239b9695f780deb010f72a2fa4bdfb6","inputTokens":["0x20c0000000000000000000006fd9a167923ba194"],"name":"zone-mainnet-internal","outputTokens":["0x20c0000000000000000000006fd9a167923ba194"]}]]}},"required":["assetToken","description","engine","id","instantLiquidity","label","sharePrice","shareToken","slug","state","vaultAddress","verified"],"additionalProperties":false,"description":"A registry-curated earn vault resolved from chain state."},"description":"Registry-curated earn vaults ordered by vault address."},"meta":{"type":"object","properties":{"valuation":{"$ref":"#/components/schemas/ValuationPricing"}},"description":"Rate provenance for valued fields."},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"additionalProperties":false,"description":"A page of registry-curated earn vaults."}}},"description":"A page of registry-curated earn vaults.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"},"example":{"error":{"code":"query_invalid","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read curated earn registry or vault data."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read curated earn registry or vault data."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List verified vaults","tags":["Earn"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/tokens/{token}/holders":{"get":{"operationId":"getTokenHolders","parameters":[{"in":"path","name":"token","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"required":true,"description":"The TIP-20 token contract address on Tempo."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["token","totalCount"]},"examples":[["token","totalCount"]]},"description":"Comma-separated related resources to include, such as `token,totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."}],"description":"Lists the accounts that hold a TIP-20 token, ordered from largest to smallest balance.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenHolderList"}}},"description":"A page of token holders.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrTokenInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The upstream indexer could not serve this request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The upstream indexer could not serve this request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List token holders","tags":["Tokens"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/tokens/{token}/transactions":{"get":{"operationId":"getTokenTransactions","parameters":[{"in":"path","name":"token","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"required":true,"description":"The TIP-20 token contract address on Tempo."},{"in":"query","name":"blockNumber.from","schema":{"examples":[23456789],"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Only include transactions at or after this block number."},{"in":"query","name":"blockNumber.to","schema":{"examples":[23456999],"type":"integer","minimum":0,"maximum":9007199254740991},"description":"Only include transactions at or before this block number."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"feePayer","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Only include transactions where this account paid the fee."},{"in":"query","name":"feeToken","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"description":"Only include transactions whose fee was paid in this token. On Tempo, fees are paid in USD stablecoins instead of a separate volatile gas token."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["feeToken.logoUri","feeToken.verified","token","totalCount"]},"examples":[["feeToken.logoUri","feeToken.verified","token","totalCount"]]},"description":"Comma-separated related resources to include, such as `feeToken.logoUri,feeToken.verified,token,totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"order","schema":{"default":"desc","examples":["desc"],"type":"string","enum":["asc","desc"]},"description":"Sort order: `desc` for descending (the default), or `asc` for ascending."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."},{"in":"query","name":"timestamp.from","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","examples":["2024-01-01T00:00:00Z"]},"description":"Only include transactions at or after this ISO 8601 timestamp."},{"in":"query","name":"timestamp.to","schema":{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$","examples":["2024-12-31T23:59:59Z"]},"description":"Only include transactions at or before this ISO 8601 timestamp."}],"description":"Lists transactions that interacted with this token contract.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenTransactionList"}}},"description":"A page of transactions involving this token contract.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrTokenInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The upstream indexer could not serve this request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The upstream indexer could not serve this request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List token transactions","tags":["Transactions"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/transactions/{transactionHash}/activities":{"get":{"operationId":"getTransactionActivities","parameters":[{"in":"path","name":"transactionHash","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x4845ae2098724ab26a5d89370dce5124d044be6a5acc164afc348662de67d474"]},"required":true,"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies the transaction whose activity you want to list."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["token.logoUri","token.verified","zones"]},"examples":[["token.logoUri","token.verified","zones"]]},"description":"Comma-separated activity options. `zones` combines the selected parent chain with every readable Zone."},{"in":"query","name":"logs","schema":{"type":"boolean","examples":[true]},"description":"Set to `true` to attach each item’s full transaction log set (decoded when possible) as a top-level `events` array, so no co-located log is hidden. Defaults to `false`. `unknown` items always include it."},{"in":"query","name":"valuation.currency","schema":{"type":"string","pattern":"^[a-zA-Z]{3}$","examples":["AUD"]},"description":"Currency to denominate values in (case-insensitive, e.g. `AUD`). Must be priced by the configured FX oracle."}],"description":"Get a human-readable list of what happened on one transaction onchain, including payments, swaps, approvals, and more.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionActivityList"}}},"description":"The classified activity for the transaction.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrTransactionInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionNotFoundError"},"example":{"error":{"code":"transaction_not_found","message":"No mined transaction was found for that hash."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No mined transaction was found for that hash."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionAmbiguousError"},"example":{"error":{"code":"transaction_ambiguous","message":"More than one readable chain contains that transaction hash."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"More than one readable chain contains that transaction hash."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Tempo could not read activity or token data from an upstream service."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Tempo could not read activity or token data from an upstream service."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List transaction activities","tags":["Activities"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/zones/withdrawals/{senderTag}":{"get":{"operationId":"listZoneWithdrawals","parameters":[{"in":"path","name":"senderTag","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x61fc42a734cb44acef497ea0bed612c691195623244136e0739e1929569e2487"]},"required":true,"description":"The 32-byte correlation tag shared by withdrawals from one sender in one Zone transaction."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[1424310003]},"required":true,"description":"The chain id of the Zone where the withdrawal originated."}],"description":"Lists L1 withdrawal outcomes by Zone sender tag. L1 success requires every `status` completed; Zone success also requires every `zoneStatus` completed. Empty lists remain pending.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Parent-chain block containing the withdrawal processing event.","examples":[123]},"id":{"type":"string","description":"Stable withdrawal id built from the parent transaction hash and log index (`${transactionHash}-${logIndex}`).","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-4"]},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Event position within the parent-chain block.","examples":[4]},"status":{"type":"string","enum":["failed","completed"],"description":"Whether parent-chain delivery or processing failed or completed.","examples":["failed","completed"]},"transactionHash":{"description":"Parent-chain transaction that processed the withdrawal.","type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"zoneStatus":{"type":"string","enum":["pending","completed"],"description":"Completed once the Zone has proven it imported the parent-chain `blockNumber` containing this withdrawal.","examples":["pending","completed"]}},"required":["blockNumber","id","logIndex","status","transactionHash","zoneStatus"],"description":"A Zone withdrawal processed on its parent chain."},"description":"Indexed parent-chain withdrawal outcomes sharing the sender tag. The list may grow while matching withdrawals are processed."}},"required":["data"],"description":"A non-paginated list of parent-chain withdrawal outcomes correlated by sender tag."},"examples":{"empty":{"summary":"Not indexed","value":{"data":[]}},"processed":{"summary":"Processed","value":{"data":[{"blockNumber":123,"id":"0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665-4","logIndex":4,"status":"completed","transactionHash":"0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665","zoneStatus":"pending"}]}}}}},"description":"Indexed parent-chain withdrawal outcomes correlated by sender tag.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrSenderTagInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"The API key does not grant read access to the originating Zone."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The API key does not grant read access to the originating Zone."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The parent-chain indexer or RPC returned unavailable or malformed data."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The parent-chain indexer or RPC returned unavailable or malformed data."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List Zone withdrawals","tags":["Zones"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["data:read"]}},"/v1/orgs/{orgId}/api-keys":{"get":{"operationId":"listOrgApiKeys","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"query","name":"environment","schema":{"default":"production","examples":["sandbox"],"type":"string","enum":["production","sandbox"]},"description":"Resource environment."}],"description":"List every API key in the organization, across all of its projects.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyList"}}},"description":"The organization's keys across all projects, newest first (metadata only).","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid query."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid query."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysNotEnabledOrOrganizationNotFoundError"},"example":{"error":{"code":"api_keys_not_enabled","message":"No accessible organization or API key surface was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization or API key surface was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List organization API keys","tags":["API Keys"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:read"]}},"/v1/orgs/{orgId}/members":{"get":{"operationId":"listMembers","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberList"}}},"description":"The members, oldest first.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List members","tags":["Members"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:read"]}},"/v1/orgs/{orgId}/webhooks":{"post":{"operationId":"createOrgWebhook","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationWebhookRequest"}}}},"hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationWebhookResponse"}}},"description":"Created webhook. HTTPS endpoints include a one-time signing secret.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrChainIdUnsupportedOrEventTypeUnsupportedOrFiltersInvalidOrParamInvalidOrUrlInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The request or destination is invalid, or the chain is not polled."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The request or destination is invalid, or the chain is not polled."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyForbiddenOrApiKeyIpForbiddenOrForbiddenOrLimitExceededError"},"example":{"error":{"code":"api_key_forbidden","message":"Admin access is required and the organization must be under its limit."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Admin access is required and the organization must be under its limit."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization or webhook capability was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization or webhook capability was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create webhook","tags":["Webhooks"],"security":[{"session":[]},{"bearerAuth":[]}]},"get":{"operationId":"listOrgWebhooks","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWebhookList"}}},"description":"Organization webhooks.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The path parameters are invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The path parameters are invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization or webhook capability was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization or webhook capability was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List webhooks","tags":["Webhooks"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/earn/addresses/{address}/positions":{"get":{"operationId":"getEarnAddressPositions","parameters":[{"in":"path","name":"address","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"required":true,"description":"Account whose earn positions to list."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["earnings"]},"examples":[["earnings"]]},"description":"Comma-separated position fields to include, such as `earnings`. Earnings are unavailable when selecting a private Zone."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"valuation.currency","schema":{"type":"string","pattern":"^[a-zA-Z]{3}$","examples":["AUD"]},"description":"When present, include each position’s nominal value in this denomination. Case-insensitive and must be priced by the configured FX oracle."},{"in":"query","name":"verified","schema":{"type":"boolean","examples":[true]},"description":"When `true`, include only positions in registry-curated (verified) earn vaults."}],"description":"Lists every earn vault where an account currently holds shares on the selected Tempo chain or private Zone. Lifetime cash flows are available on Tempo chains.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"assetAmount":{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Value in base units at `decimals` precision.","examples":["125288750000"]},"currency":{"type":"string","description":"Display currency of this value.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `amount` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Value rendered in whole units.","examples":["125288.75"]}},"required":["amount","currency","decimals","formatted"],"additionalProperties":false,"description":"Current asset value of the held shares, including fees, in `valueToken` units."},"assetToken":{"$ref":"#/components/schemas/TokenReference"},"chainId":{"description":"Chain containing the held shares.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[42431]},"id":{"description":"Stable resource ID for this position, equal to the vault address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"lifetimeCashFlows":{"description":"Lifetime deposits and completed withdrawals, when requested.","anyOf":[{"type":"object","properties":{"status":{"type":"string","const":"complete","description":"Cash flows are complete through the indexed boundary.","examples":["complete"]},"totalDeposited":{"type":"string","pattern":"^\\d+$","description":"Assets deposited with this account as receiver over indexed vault history.","examples":["1000000"]},"totalWithdrawn":{"type":"string","pattern":"^\\d+$","description":"Assets returned by completed withdrawals over indexed vault history.","examples":["1000000"]}},"required":["status","totalDeposited","totalWithdrawn"],"additionalProperties":false},{"type":"object","properties":{"status":{"type":"string","const":"incomplete_history","description":"Cash flows are omitted because asset deposit history is incomplete.","examples":["incomplete_history"]}},"required":["status"],"additionalProperties":false}]},"shareAmount":{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Value in base units at `decimals` precision.","examples":["125288750000"]},"currency":{"type":"string","description":"Display currency of this value.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `amount` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Value rendered in whole units.","examples":["125288.75"]}},"required":["amount","currency","decimals","formatted"],"additionalProperties":false,"description":"Earn share balance this account holds, in `shareToken` units."},"shareToken":{"$ref":"#/components/schemas/TokenReference"},"valuation":{"description":"The position’s nominal value when `valuation.currency` is requested, or `null` when the asset token is unverified, its display currency has no rate, or rates were unavailable.","anyOf":[{"$ref":"#/components/schemas/ValuationValue"},{"type":"null"}]},"valueToken":{"$ref":"#/components/schemas/TokenReference"},"vaultAddress":{"description":"Earn vault contract address holding this position.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"verified":{"type":"boolean","description":"Whether the vault is in the curated earn registry.","examples":[true]}},"required":["assetAmount","assetToken","chainId","id","shareAmount","shareToken","valueToken","vaultAddress","verified"],"additionalProperties":false},"description":"Vaults where the account holds earn shares."},"meta":{"type":"object","properties":{"valuation":{"$ref":"#/components/schemas/ValuationPricing"}},"description":"Page-level valuation rate provenance."},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this back as the `cursor` query parameter to fetch the next page. `null` once you have reached the end of the list.","examples":["WzIzNDU2Nzg5LDBd"]}},"required":["data","nextCursor"],"additionalProperties":false,"description":"A page of the account’s earn vault positions."}}},"description":"A page of the account’s earn vault positions.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrPositionsInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read earn deployment or position data."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read earn deployment or position data."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List account positions","tags":["Earn"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/exchange/orders/{orderId}/fills":{"get":{"operationId":"getOrderFills","parameters":[{"in":"path","name":"orderId","schema":{"type":"string","pattern":"^\\d+$","examples":["1"]},"required":true,"description":"On-chain order id, returned as a decimal string."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["totalCount"]},"examples":[["totalCount"]]},"description":"Comma-separated optional resources to embed, e.g. `totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"order","schema":{"default":"desc","examples":["desc"],"type":"string","enum":["asc","desc"]},"description":"Sort order: `desc` for descending (the default), or `asc` for ascending."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."}],"description":"List fills for one order. A fill records an execution against the maker order.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeOrderFillList"}}},"description":"A page of fills for one order.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrOrderInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The indexer could not serve the exchange data right now."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The indexer could not serve the exchange data right now."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List order fills","tags":["Exchange"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/funding/transfers/{id}/source-transactions":{"post":{"operationId":"registerFundingTransferSourceTransaction","parameters":[{"in":"path","name":"id","schema":{"type":"string","examples":["ftr_001785729600000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Funding transfer ID (`ftr_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterFundingTransferSourceTransactionRequest"}}}},"description":"Verifies and registers source transactions for a funding transfer.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingTransfer"},"example":{"createdAt":"2026-01-01T00:00:00.000Z","destinationAmount":{"baseUnits":"979295","currency":"USD","decimals":6,"formatted":"0.979295"},"destinationAmountMin":{"baseUnits":"939242","currency":"USD","decimals":6,"formatted":"0.939242"},"destinationChain":{"addressFormat":"hex","id":"eip155:4217","kind":"evm","name":"Tempo"},"destinationToken":{"address":"0x20c0000000000000000000000000000000000000","currency":"USD","decimals":6,"name":"PathUSD","standard":"TIP-20","symbol":"pathUSD","tokenKey":"eip155:4217/erc20:0x20c0000000000000000000000000000000000000","verified":true},"fees":[{"amount":{"baseUnits":"20705","currency":"USD","decimals":6,"formatted":"0.020705"},"side":"source","token":{"address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","currency":"USD","decimals":6,"name":"USD Coin","standard":"ERC-20","symbol":"USDC","tokenKey":"eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","verified":true},"type":"provider"}],"id":"ftr_001767225600000_2ZPE2gvateYEQ0dQslgvkhjx","method":"transaction","mode":"exactSource","provider":{"id":"relay","name":"Relay"},"quote":{"expiresAt":"2026-01-01T00:01:00.000Z","sampledAt":"2026-01-01T00:00:00.000Z"},"recipient":"0x1111111111111111111111111111111111111111","sender":"0x2222222222222222222222222222222222222222","sourceAmount":{"baseUnits":"1000000","currency":"USD","decimals":6,"formatted":"1"},"sourceChain":{"addressFormat":"hex","id":"eip155:8453","kind":"evm","name":"Base"},"sourceToken":{"address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","currency":"USD","decimals":6,"name":"USD Coin","standard":"ERC-20","symbol":"USDC","tokenKey":"eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","verified":true},"status":"processing","updatedAt":"2026-01-01T00:00:20.000Z","version":2,"sourceTransactionHashes":["0x5151515151515151515151515151515151515151515151515151515151515151"]}}},"description":"The transfer with its verified source transactions.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidOrSourceTransactionInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The path, body, or submitted source transaction is invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The path, body, or submitted source transaction is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingTransferNotFoundError"},"example":{"error":{"code":"funding_transfer_not_found","message":"No visible funding transfer exists for the identifier."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No visible funding transfer exists for the identifier."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingTransferNotAwaitingSourceOrSourceTransactionConflictOrSourceTransactionPendingError"},"example":{"error":{"code":"funding_transfer_not_awaiting_source","message":"The transfer or source transaction cannot be registered yet."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The transfer or source transaction cannot be registered yet."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotImplemented501Error"},"example":{"error":{"code":"not_implemented","message":"Source transaction reconciliation is not configured."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Source transaction reconciliation is not configured."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Source verification or reconciliation dispatch failed."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Source verification or reconciliation dispatch failed."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Register source transaction","tags":["Funding Transfers"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["funding:write"]}},"/v1/orgs/{orgId}/invite-links/{inviteLinkId}/redemptions":{"get":{"operationId":"listInviteLinkRedemptions","parameters":[{"in":"path","name":"inviteLinkId","schema":{"type":"string","examples":["iln_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Invite-link resource id (`iln_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLinkRedemptionList"}}},"description":"Redemptions.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLinkNotFoundOrOrganizationNotFoundError"},"example":{"error":{"code":"invite_link_not_found","message":"No accessible organization or invite link was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization or invite link was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List link redemptions","tags":["Invite Links"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/orgs":{"get":{"operationId":"listOrganizations","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationList"}}},"description":"The organizations, newest first.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List organizations","tags":["Organizations"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:read"]},"post":{"operationId":"createOrganization","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"The created organization.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create organization","tags":["Organizations"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/webhooks/{id}":{"get":{"operationId":"getWebhook","parameters":[{"in":"path","name":"id","schema":{"type":"string","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Webhook subscription ID (`wh_…`)."}],"description":"Get one webhook subscription by its ID.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}},"description":"The requested webhook subscription.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The webhook ID is invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The webhook ID is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"webhook_not_found","message":"No webhook subscription was found for that ID."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No webhook subscription was found for that ID."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get webhook","tags":["Webhooks"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["webhooks:read"]},"patch":{"operationId":"updateWebhook","parameters":[{"in":"path","name":"id","schema":{"type":"string","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Webhook subscription ID (`wh_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookRequest"}}}},"description":"Update a webhook subscription URL, filters, or delivery status.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}},"description":"The updated webhook subscription.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrDestinationTransitionInvalidOrFiltersInvalidOrParamInvalidOrUrlInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The update, destination, or filters are invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The update, destination, or filters are invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"webhook_not_found","message":"No webhook subscription was found for that ID."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No webhook subscription was found for that ID."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Update webhook","tags":["Webhooks"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["webhooks:write"]},"delete":{"operationId":"deleteWebhook","parameters":[{"in":"path","name":"id","schema":{"type":"string","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Webhook subscription ID (`wh_…`)."}],"description":"Delete a webhook subscription and stop future deliveries immediately.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteWebhookResponse"}}},"description":"Confirmation that the webhook subscription was deleted.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The webhook ID is invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The webhook ID is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"webhook_not_found","message":"No webhook subscription was found for that ID."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No webhook subscription was found for that ID."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Delete webhook","tags":["Webhooks"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["webhooks:write"]}},"/v1/funding/transfers":{"get":{"operationId":"listFundingTransfers","parameters":[{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["totalCount"]},"examples":[["totalCount"]]},"description":"Comma-separated optional resources to embed, e.g. `totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"status","schema":{"type":"string","enum":["awaiting-source","processing","refunding","completed","refunded","action-required","expired"],"examples":["awaiting-source"]},"description":"Lifecycle status of the funding transfer."}],"description":"Lists transfers from newest to oldest.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingTransferList"},"example":{"data":[{"createdAt":"2026-01-01T00:00:00.000Z","destinationAmount":{"baseUnits":"979295","currency":"USD","decimals":6,"formatted":"0.979295"},"destinationAmountMin":{"baseUnits":"939242","currency":"USD","decimals":6,"formatted":"0.939242"},"destinationChain":{"addressFormat":"hex","id":"eip155:4217","kind":"evm","name":"Tempo"},"destinationToken":{"address":"0x20c0000000000000000000000000000000000000","currency":"USD","decimals":6,"name":"PathUSD","standard":"TIP-20","symbol":"pathUSD","tokenKey":"eip155:4217/erc20:0x20c0000000000000000000000000000000000000","verified":true},"fees":[{"amount":{"baseUnits":"20705","currency":"USD","decimals":6,"formatted":"0.020705"},"side":"source","token":{"address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","currency":"USD","decimals":6,"name":"USD Coin","standard":"ERC-20","symbol":"USDC","tokenKey":"eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","verified":true},"type":"provider"}],"id":"ftr_001767225600000_2ZPE2gvateYEQ0dQslgvkhjx","method":"transaction","mode":"exactSource","provider":{"id":"relay","name":"Relay"},"quote":{"expiresAt":"2026-01-01T00:01:00.000Z","sampledAt":"2026-01-01T00:00:00.000Z"},"recipient":"0x1111111111111111111111111111111111111111","sender":"0x2222222222222222222222222222222222222222","sourceAmount":{"baseUnits":"1000000","currency":"USD","decimals":6,"formatted":"1"},"sourceChain":{"addressFormat":"hex","id":"eip155:8453","kind":"evm","name":"Base"},"sourceToken":{"address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","currency":"USD","decimals":6,"name":"USD Coin","standard":"ERC-20","symbol":"USDC","tokenKey":"eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","verified":true},"status":"awaiting-source","updatedAt":"2026-01-01T00:00:00.000Z","version":1}],"nextCursor":null}}},"description":"A page of funding transfers.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List transfers","tags":["Funding Transfers"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["funding:read"]},"post":{"operationId":"createFundingTransfer","parameters":[{"in":"header","name":"idempotency-key","schema":{"type":"string","minLength":1,"examples":["funding_01k1c5j8q8p0be6j5v9m6d1e4r"]},"required":true,"description":"Opaque retry key scoped to the API key. Matching requests replay successful responses for 24 hours; changed input conflicts, in-flight requests block, and failed attempts release the key."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFundingTransferRequest"}}}},"description":"Creates a transfer to a Tempo account.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedFundingTransfer"},"example":{"action":{"calls":[{"data":"0x095ea7b3000000000000000000000000444444444444444444444444444444444444444400000000000000000000000000000000000000000000000000000000000f4240","to":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","value":"0x0"},{"data":"0xe8017952","to":"0x4444444444444444444444444444444444444444","value":"0x0"}],"type":"evm:calls"},"createdAt":"2026-01-01T00:00:00.000Z","destinationAmount":{"baseUnits":"979295","currency":"USD","decimals":6,"formatted":"0.979295"},"destinationAmountMin":{"baseUnits":"939242","currency":"USD","decimals":6,"formatted":"0.939242"},"destinationChain":{"addressFormat":"hex","id":"eip155:4217","kind":"evm","name":"Tempo"},"destinationToken":{"address":"0x20c0000000000000000000000000000000000000","currency":"USD","decimals":6,"name":"PathUSD","standard":"TIP-20","symbol":"pathUSD","tokenKey":"eip155:4217/erc20:0x20c0000000000000000000000000000000000000","verified":true},"fees":[{"amount":{"baseUnits":"20705","currency":"USD","decimals":6,"formatted":"0.020705"},"side":"source","token":{"address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","currency":"USD","decimals":6,"name":"USD Coin","standard":"ERC-20","symbol":"USDC","tokenKey":"eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","verified":true},"type":"provider"}],"id":"ftr_001767225600000_2ZPE2gvateYEQ0dQslgvkhjx","method":"transaction","mode":"exactSource","provider":{"id":"relay","name":"Relay"},"quote":{"expiresAt":"2026-01-01T00:01:00.000Z","sampledAt":"2026-01-01T00:00:00.000Z"},"recipient":"0x1111111111111111111111111111111111111111","sender":"0x2222222222222222222222222222222222222222","sourceAmount":{"baseUnits":"1000000","currency":"USD","decimals":6,"formatted":"1"},"sourceChain":{"addressFormat":"hex","id":"eip155:8453","kind":"evm","name":"Base"},"sourceToken":{"address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","currency":"USD","decimals":6,"name":"USD Coin","standard":"ERC-20","symbol":"USDC","tokenKey":"eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","verified":true},"status":"awaiting-source","updatedAt":"2026-01-01T00:00:00.000Z","version":1}}},"description":"The created funding transfer with its one-time executable action.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrIdempotencyKeyRequiredError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteNotAvailableError"},"example":{"error":{"code":"quote_not_available","message":"No provider can prepare the requested route."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No provider can prepare the requested route."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdempotencyConflictOrIdempotencyInProgressError"},"example":{"error":{"code":"idempotency_conflict","message":"The Idempotency-Key conflicts with an existing or in-flight request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The Idempotency-Key conflicts with an existing or in-flight request."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"No provider succeeded and at least one failed unexpectedly."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No provider succeeded and at least one failed unexpectedly."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create transfer","tags":["Funding Transfers"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["funding:write"]}},"/v1/funding/transfers/vault":{"post":{"operationId":"createFundingTransferVault","parameters":[{"in":"header","name":"idempotency-key","schema":{"type":"string","minLength":1,"examples":["funding_01k1c5j8q8p0be6j5v9m6d1e4r"]},"required":true,"description":"Opaque retry key scoped to the API key. Matching requests replay successful responses for 24 hours; changed input conflicts, in-flight requests block, and failed attempts release the key."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFundingTransferVaultRequest"}}}},"description":"Creates a transfer into a Tempo Earn vault.","responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrIdempotencyKeyRequiredError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotImplemented501Error"},"example":{"error":{"code":"not_implemented","message":"This funding transfer destination is not implemented."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"This funding transfer destination is not implemented."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create transfer into vault","tags":["Funding Transfers"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["funding:write"]}},"/v1/funding/transfers/zone":{"post":{"operationId":"createFundingTransferZone","parameters":[{"in":"header","name":"idempotency-key","schema":{"type":"string","minLength":1,"examples":["funding_01k1c5j8q8p0be6j5v9m6d1e4r"]},"required":true,"description":"Opaque retry key scoped to the API key. Matching requests replay successful responses for 24 hours; changed input conflicts, in-flight requests block, and failed attempts release the key."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFundingTransferZoneRequest"}}}},"description":"Creates a transfer into a Tempo Zone.","responses":{"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrIdempotencyKeyRequiredError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotImplemented501Error"},"example":{"error":{"code":"not_implemented","message":"This funding transfer destination is not implemented."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"This funding transfer destination is not implemented."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create transfer into zone","tags":["Funding Transfers"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["funding:write"]}},"/v1/orgs/{orgId}/invitations":{"post":{"operationId":"createInvitation","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInvitationRequest"}}}},"description":"Invite an email to the organization with a role. The invitee accepts after signing in with that verified email.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invitation"}}},"description":"The created invitation.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create invitation","tags":["Invitations"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]},"get":{"operationId":"listInvitations","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationList"}}},"description":"Pending invitations, newest first.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List invitations","tags":["Invitations"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:read"]}},"/v1/orgs/{orgId}/invite-links":{"post":{"operationId":"createInviteLink","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInviteLinkRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLink"}}},"description":"Created link.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create invite link","tags":["Invite Links"],"security":[{"session":[]},{"bearerAuth":[]}]},"get":{"operationId":"listInviteLinks","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLinkList"}}},"description":"Invite links.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List invite links","tags":["Invite Links"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/orgs/{orgId}/projects":{"get":{"operationId":"listProjects","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectList"}}},"description":"The organization's projects, newest first.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path parameters."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path parameters."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List projects","tags":["Projects"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:read"]},"post":{"operationId":"createProject","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"The created project.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path parameters, or invalid request body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path parameters, or invalid request body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create project","tags":["Projects"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]}},"/v1/orgs/{orgId}/verified-token-requests":{"post":{"operationId":"createVerifiedTokenRequest","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVerifiedTokenRequestInput"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifiedTokenRequest"}}},"description":"Created request.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestLimitReachedOrRequestPendingExistsOrVerifiedSymbolExistsOrVerifiedTokenExistsError"},"example":{"error":{"code":"request_limit_reached","message":"The token is already verified or requested, or the organization is at its pending-request limit."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The token is already verified or requested, or the organization is at its pending-request limit."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create token request","tags":["Verified Token Requests"],"security":[{"session":[]},{"bearerAuth":[]}]},"get":{"operationId":"listVerifiedTokenRequests","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifiedTokenRequestList"}}},"description":"Verification requests.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List token requests","tags":["Verified Token Requests"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/funding/deposit-addresses/{id}/reconcile":{"post":{"operationId":"reconcileFundingDepositAddress","parameters":[{"in":"path","name":"id","schema":{"type":"string","pattern":"^fda_[A-Za-z0-9_-]+$","examples":["fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Funding deposit address ID (`fda_…`)."}],"description":"Queues an immediate provider reconciliation for one reusable funding deposit address.","responses":{"202":{"description":"The funding deposit address was queued for reconciliation.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"The API key does not grant funding write access."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The API key does not grant funding write access."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingDepositAddressNotFoundError"},"example":{"error":{"code":"funding_deposit_address_not_found","message":"No visible funding deposit address exists for the identifier."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No visible funding deposit address exists for the identifier."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingDepositAddressNotActiveError"},"example":{"error":{"code":"funding_deposit_address_not_active","message":"The funding deposit address is not active."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The funding deposit address is not active."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotImplemented501Error"},"example":{"error":{"code":"not_implemented","message":"Manual funding reconciliation is not configured."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Manual funding reconciliation is not configured."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Reconciliation could not be queued."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Reconciliation could not be queued."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Reconcile deposit address","tags":["Deposit Addresses"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["funding:write"]}},"/v1/orgs/{orgId}/projects/{projectId}/api-keys":{"post":{"operationId":"createApiKey","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"path","name":"projectId","schema":{"type":"string","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The project id (`prj_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyRequest"}}}},"description":"Mint a project-attributed API key. The token appears once and is never shown again.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyResponse"}}},"description":"The minted key, including its one-time token.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyForbiddenOrApiKeyIpForbiddenOrForbiddenOrScopeNotIssuableError"},"example":{"error":{"code":"api_key_forbidden","message":"The requested scopes are not issuable."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The requested scopes are not issuable."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysNotEnabledOrOrganizationNotFoundOrProjectNotFoundError"},"example":{"error":{"code":"api_keys_not_enabled","message":"No accessible project or API key surface was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible project or API key surface was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create API key","tags":["API Keys"],"security":[{"session":[]},{"bearerAuth":[]}]},"get":{"operationId":"listApiKeys","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"path","name":"projectId","schema":{"type":"string","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The project id (`prj_…`)."},{"in":"query","name":"environment","schema":{"default":"production","examples":["sandbox"],"type":"string","enum":["production","sandbox"]},"description":"Resource environment."}],"hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyList"}}},"description":"The project's keys, newest first (metadata only).","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid query."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid query."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeysNotEnabledOrOrganizationNotFoundOrProjectNotFoundError"},"example":{"error":{"code":"api_keys_not_enabled","message":"No accessible project or API key surface was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible project or API key surface was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List API keys","tags":["API Keys"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:read"]}},"/v1/orgs/{orgId}/webhooks/{id}/deliveries/{deliveryId}":{"get":{"operationId":"getOrgWebhookDelivery","parameters":[{"in":"path","name":"deliveryId","schema":{"type":"string","examples":["whd_001718668800000_C1yJkk7CuML98HFthEDk9PsY"]},"required":true,"description":"Delivery ID (`whd_…`) you want Tempo to replay."},{"in":"path","name":"id","schema":{"type":"string","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Webhook subscription id (`wh_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWebhookDelivery"}}},"description":"The delivery attempt and exact JSON payload Tempo sent.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The path parameters are invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The path parameters are invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliveryNotFoundOrOrganizationNotFoundOrWebhookNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"delivery_not_found","message":"No accessible organization, webhook, delivery, or webhook capability was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization, webhook, delivery, or webhook capability was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get webhook delivery","tags":["Webhooks"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/tokenlist":{"get":{"operationId":"getTokenList","parameters":[{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."}],"description":"Returns every verified token on a Tempo chain in the standard Uniswap Token Lists format, so wallets and apps can show trusted names, symbols, and logos.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","description":"The human-readable name of this token list.","examples":["Tempo Verified Tokens"]},"timestamp":{"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 ISO 8601 timestamp when this token list was last updated.","examples":["2024-01-01T00:00:00Z"]},"version":{"type":"object","properties":{"major":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The major number in the token list’s semantic version.","examples":[1]},"minor":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The minor number in the token list’s semantic version.","examples":[0]},"patch":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The patch number in the token list’s semantic version.","examples":[0]}},"required":["major","minor","patch"],"description":"The token list’s semantic version."},"tokens":{"type":"array","items":{"type":"object","properties":{"chainId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"The Tempo chain ID where this token lives.","examples":[4217]},"address":{"description":"The TIP-20 token contract address on Tempo.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"name":{"type":"string","description":"The token’s human-readable name.","examples":["Bridged USDC (Stargate)"]},"symbol":{"type":"string","description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC.e"]},"decimals":{"type":"integer","minimum":0,"maximum":255,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"logoURI":{"description":"The curated HTTPS URL for this token’s logo image, when one is set.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"}},"required":["chainId","address","name","symbol","decimals"],"description":"One token entry in the standard verified token list format."},"description":"The verified TIP-20 tokens on this chain."}},"required":["name","timestamp","version","tokens"],"description":"A Uniswap Token Lists-compatible list of Tempo’s verified TIP-20 tokens."},"example":{"name":"Tempo","timestamp":"2026-06-17T00:00:00.000Z","version":{"major":1,"minor":0,"patch":2},"tokens":[{"address":"0x20c000000000000000000000b9537d11c60e8b50","chainId":4217,"decimals":6,"logoURI":"https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1","name":"Bridged USDC (Stargate)","symbol":"USDC.e"}]}}},"description":"A standard token list of Tempo’s verified TIP-20 tokens.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"},"example":{"error":{"code":"query_invalid","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get token list","tags":["Verified Tokens"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/me":{"get":{"operationId":"getMe","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"description":"The authenticated user.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"The caller is not a signed-in user."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The caller is not a signed-in user."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserNotFoundError"},"example":{"error":{"code":"user_not_found","message":"No user exists for this session."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No user exists for this session."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get current user","tags":["Users"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/blocks/{block}":{"get":{"operationId":"getBlock","parameters":[{"in":"path","name":"block","schema":{"anyOf":[{"type":"string","enum":["latest","finalized"]},{"type":"string","pattern":"^(0x[0-9a-fA-F]+|[0-9]+)$"},{"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}],"examples":["1000000","latest","2023-11-14T22:13:20Z"]},"required":true,"description":"Block selector: `latest`, `finalized`, a decimal or hex block number, a 32-byte block hash, or an ISO 8601 timestamp."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."}],"description":"Get one block by tag, number, hash, or timestamp selector.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Block"}}},"description":"A single block with number, timestamp, gas usage, producer, and original JSON-RPC data.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBlockInvalidOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlockNotFoundError"},"example":{"error":{"code":"block_not_found","message":"No block matched the selector, or no indexed block exists at or after the timestamp."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No block matched the selector, or no indexed block exists at or after the timestamp."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read block data from the upstream JSON-RPC node or TIDX."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read block data from the upstream JSON-RPC node or TIDX."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get a block by selector","tags":["Blocks"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/tokens/{symbol}":{"get":{"operationId":"getTokenBySymbol","parameters":[{"in":"path","name":"symbol","schema":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9._]{0,63}$","examples":["USDC.e"]},"required":true,"description":"The symbol of a token in Tempo’s verified token list."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["admin","createdAt","holderCount","quoteToken","transferStats"]},"examples":[["admin","createdAt","holderCount","quoteToken","transferStats"]]},"description":"Comma-separated extra token details to include, such as `admin,createdAt,holderCount,quoteToken,transferStats`."}],"description":"Returns token metadata for a verified TIP-20 token using its symbol, such as `USDC`.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"example":{"address":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","decimals":6,"id":"0x20c000000000000000000000b9537d11c60e8b50","logoUri":"https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1","name":"Bridged USDC (Stargate)","symbol":"USDC.e","totalSupply":"10850791186630","verified":true}}},"description":"Metadata for one TIP-20 token.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrSymbolInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenNotFoundError"},"example":{"error":{"code":"token_not_found","message":"No token was found for this address or symbol."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No token was found for this address or symbol."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"An upstream RPC or indexer request failed while resolving this token."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"An upstream RPC or indexer request failed while resolving this token."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get token by symbol","tags":["Tokens"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/tokens/{token}":{"get":{"operationId":"getToken","parameters":[{"in":"path","name":"token","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"required":true,"description":"The TIP-20 token contract address on Tempo."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["admin","createdAt","holderCount","quoteToken","transferStats"]},"examples":[["admin","createdAt","holderCount","quoteToken","transferStats"]]},"description":"Comma-separated extra token details to include, such as `admin,createdAt,holderCount,quoteToken,transferStats`."}],"description":"Returns token metadata for a TIP-20 contract address, whether or not the token is in the verified list.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Token"},"example":{"address":"0x20c000000000000000000000b9537d11c60e8b50","currency":"USD","decimals":6,"id":"0x20c000000000000000000000b9537d11c60e8b50","logoUri":"https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1","name":"Bridged USDC (Stargate)","symbol":"USDC.e","totalSupply":"10850791186630","verified":true}}},"description":"Metadata for one TIP-20 token.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrTokenInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenNotFoundError"},"example":{"error":{"code":"token_not_found","message":"No token was found for this address or symbol."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No token was found for this address or symbol."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"An upstream RPC or indexer request failed while resolving this token."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"An upstream RPC or indexer request failed while resolving this token."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get token by address","tags":["Tokens"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/transactions/{transactionHash}":{"get":{"operationId":"getTransaction","parameters":[{"in":"path","name":"transactionHash","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"required":true,"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies this transaction."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["feeToken.logoUri","feeToken.verified","receipt"]},"examples":[["feeToken.logoUri","feeToken.verified","receipt"]]},"description":"Comma-separated related resources to include, such as `feeToken.logoUri,feeToken.verified,receipt`."}],"description":"Get one transaction by its 32-byte transaction hash.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Transaction"}}},"description":"A single transaction with decoded fields and original JSON-RPC data.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrTransactionInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionNotFoundError"},"example":{"error":{"code":"transaction_not_found","message":"No transaction was found for that hash."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No transaction was found for that hash."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read transaction or token data from upstream JSON-RPC."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read transaction or token data from upstream JSON-RPC."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get a transaction by hash","tags":["Transactions"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/verified-tokens/{address}":{"get":{"operationId":"getVerifiedToken","parameters":[{"in":"path","name":"address","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"required":true,"description":"The TIP-20 token contract address on Tempo."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."}],"description":"Returns one curated verified TIP-20 token by contract address.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifiedToken"}}},"description":"One verified TIP-20 token from Tempo’s curated list.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressInvalidOrApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifiedTokenNotFoundError"},"example":{"error":{"code":"verified_token_not_found","message":"No verified token was found for this address."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No verified token was found for this address."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The verified-token store could not complete the request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The verified-token store could not complete the request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get verified token","tags":["Verified Tokens"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/webhooks/event-types":{"get":{"operationId":"getWebhookEventTypes","description":"See which onchain event types Tempo can POST to your webhook URL.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookEventTypeList"}}},"description":"Webhook event types available for subscription.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedError"},"example":{"error":{"code":"api_key_malformed","message":"The API key credential is malformed."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The API key credential is malformed."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhooksNotEnabledError"},"example":{"error":{"code":"webhooks_not_enabled","message":"Webhooks are not enabled for this API deployment."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Webhooks are not enabled for this API deployment."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List webhook event types","tags":["Webhooks"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/gecko/{chainId}/latest-block":{"get":{"operationId":"coingeckoLatestBlock","parameters":[{"in":"path","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"required":true,"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`)."}],"description":"Returns the latest indexed Tempo block in GeckoTerminal format so DEX data tools know where to start polling.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinGeckoLatestBlockResponse"}}},"description":"Latest indexed Tempo block.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"not_found","message":"No indexed block was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No indexed block was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The upstream Tempo indexer could not complete the request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The upstream Tempo indexer could not complete the request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get latest indexed block","tags":["CoinGecko"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/orgs/{orgId}":{"get":{"operationId":"getOrganization","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"One organization.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get organization","tags":["Organizations"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:read"]},"patch":{"operationId":"updateOrganization","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"The updated organization.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Update organization","tags":["Organizations"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]},"delete":{"operationId":"deleteOrganization","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."}],"description":"Delete an organization and all of its projects.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteOrganizationResponse"}}},"description":"Confirmation that the organization was deleted.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SponsorshipsUnreportedError"},"example":{"error":{"code":"sponsorships_unreported","message":"Billable sponsorships are still awaiting settlement."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Billable sponsorships are still awaiting settlement."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Delete organization","tags":["Organizations"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]}},"/v1/addresses/{address}/valuation":{"get":{"operationId":"getAddressValuation","parameters":[{"in":"path","name":"address","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"required":true,"description":"The account address whose holdings you want to value."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"currency","schema":{"type":"string","pattern":"^[a-zA-Z]{3}$","examples":["AUD"]},"description":"Currency to denominate the account value in. Defaults to `USD` and must be priced by the configured FX oracle."}],"description":"Values every verified TIP-20 token an account holds as one unit of its display currency, converts each currency into the requested denomination using the configured FX rates, and returns the total.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressValuation"}}},"description":"The valuation of this account’s verified holdings.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressInvalidOrApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read balances or exchange rates from an upstream service."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read balances or exchange rates from an upstream service."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get address valuation","tags":["Balances"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/earn/vaults/{vaultId}":{"get":{"operationId":"getEarnVault","parameters":[{"in":"path","name":"vaultId","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"required":true,"description":"Earn vault contract address."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["access","apy","capabilities","token.logoUri","tvl","zone","zones"]},"examples":[["access","apy","capabilities","token.logoUri","tvl","zone","zones"]]},"description":"Comma-separated vault fields to include, such as `apy,tvl`."},{"in":"query","name":"apy.window","schema":{"examples":["7d"],"type":"string","enum":["1h","1d","7d","30d"]},"description":"Rate measurement window. Selecting a window includes `apy`, which measures `7d` on its own."}],"description":"Resolves any compatible earn vault directly from current chain state and enriches it when curated.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"access":{"description":"Vault share-token access, when requested.","type":"object","properties":{"status":{"type":"string","enum":["allowlisted","open"],"description":"Vault share-token access status.","examples":["open"]}},"required":["status"],"additionalProperties":false},"apy":{"description":"Annualized share-price growth over the selected window, when requested via `include=apy` or by selecting `apy.window`. Null when the rate could not be measured: the vault predates the window, a boundary or historical quote is unavailable, the engine changed inside the window, or the growth is too extreme to annualize as a ratio.","anyOf":[{"type":"object","properties":{"asOf":{"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":"UTC instant the rate was measured to, rounded to a 15-minute bucket.","examples":["2026-07-21T09:00:00.000Z"]},"methodology":{"type":"string","const":"share-price-growth-annualized:v1","description":"Identifier of the calculation that produced this rate.","examples":["share-price-growth-annualized:v1"]},"net":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?$","description":"Annualized fee-aware share-price growth, as a decimal ratio.","examples":["0.041200"]},"window":{"type":"string","enum":["1h","1d","7d","30d"],"description":"Window this rate covers.","examples":["7d"]}},"required":["asOf","methodology","net","window"],"additionalProperties":false,"description":"Annualized share-price growth over one measurement window."},{"type":"null"}]},"assetToken":{"$ref":"#/components/schemas/TokenReference"},"capabilities":{"description":"Vault capabilities, when requested.","type":"object","properties":{"asyncRedeem":{"type":"boolean","description":"Whether queued redemptions are supported.","examples":[false]},"boundedRedeem":{"type":"boolean","description":"Whether redemption accepts a minimum asset bound.","examples":[true]},"deposit":{"type":"boolean","description":"Whether asset deposits are supported.","examples":[true]},"exactWithdraw":{"type":"boolean","description":"Whether exact asset withdrawals are supported.","examples":[true]},"inKindDeposit":{"type":"boolean","description":"Whether venue-share deposits are supported.","examples":[true]},"privateRouting":{"type":"boolean","description":"Whether private routing is supported.","examples":[false]},"redeem":{"type":"boolean","description":"Whether immediate redemptions are supported.","examples":[true]},"routerSwaps":{"type":"boolean","description":"Whether router token swaps are supported.","examples":[false]}},"required":["asyncRedeem","boundedRedeem","deposit","exactWithdraw","inKindDeposit","privateRouting","redeem","routerSwaps"],"additionalProperties":false},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curated vault description, or null when the vault is not verified.","examples":["deelUSD deposited into the canonical Tempo Earn deployment."]},"engine":{"type":"object","properties":{"address":{"description":"Current vault engine contract address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"type":{"anyOf":[{"type":"string","enum":["erc4626","veda"],"description":"Inferred vault engine type.","examples":["erc4626"]},{"type":"null"}],"description":"Inferred engine type, or null when it is unknown."},"venue":{"anyOf":[{"description":"Yield venue contract bound to the engine.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},{"type":"null"}],"description":"Yield venue, or null when the engine does not expose one."}},"required":["address","type","venue"],"additionalProperties":false,"description":"Current vault engine."},"id":{"description":"Stable vault id, equal to the lowercase vault address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"instantLiquidity":{"anyOf":[{"type":"string","pattern":"^\\d+$","description":"Assets the venue would release right now, in asset base units.","examples":["1000000"]},{"type":"null"}],"description":"Assets the venue would release right now, capped at the vault backing, in asset base units. Null when the engine interface cannot report a reliable number."},"instantLiquidityValue":{"description":"Instant liquidity valued in USD, when requested via `include=tvl`, or null when liquidity is unavailable or the asset has no priced display currency.","anyOf":[{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Value in base units at `decimals` precision.","examples":["125288750000"]},"currency":{"type":"string","description":"Display currency of this value.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `amount` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Value rendered in whole units.","examples":["125288.75"]}},"required":["amount","currency","decimals","formatted"],"additionalProperties":false},{"type":"null"}]},"label":{"type":"string","description":"Vault display label.","examples":["deelUSD Earn"]},"sharePrice":{"anyOf":[{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Value in base units at `decimals` precision.","examples":["125288750000"]},"currency":{"type":"string","description":"Display currency of this value.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `amount` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Value rendered in whole units.","examples":["125288.75"]}},"required":["amount","currency","decimals","formatted"],"additionalProperties":false},{"type":"null"}],"description":"Assets returned for one whole earn share, in the asset display currency, or null when the engine cannot quote an exit."},"shareToken":{"$ref":"#/components/schemas/TokenReference"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Curated URL slug, or null when the vault is not verified.","examples":["deelusd-earn"]},"state":{"type":"object","properties":{"depositsPaused":{"type":"boolean","description":"Whether new deposits are paused.","examples":[false]},"engineShares":{"type":"string","pattern":"^\\d+$","description":"Venue shares held for the vault.","examples":["1000000"]},"feesActive":{"type":"boolean","description":"Whether fees are configured and not emergency-disabled.","examples":[true]},"isAccountingAligned":{"type":"boolean","description":"Whether Earn share supply matches its asset backing.","examples":[true]},"openRedeemRequestCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Queued redemptions still awaiting settlement.","examples":[0]},"totalAssets":{"type":"string","pattern":"^\\d+$","description":"Asset value of the active backing.","examples":["1000000"]},"totalEarnShares":{"type":"string","pattern":"^\\d+$","description":"Active Earn share supply.","examples":["1000000"]}},"required":["depositsPaused","engineShares","feesActive","isAccountingAligned","openRedeemRequestCount","totalAssets","totalEarnShares"],"additionalProperties":false,"description":"Live vault accounting state."},"tvl":{"description":"Total assets valued in USD, when requested via `include=tvl`, or null when the asset has no priced display currency.","anyOf":[{"type":"object","properties":{"amount":{"type":"string","pattern":"^\\d+$","description":"Value in base units at `decimals` precision.","examples":["125288750000"]},"currency":{"type":"string","description":"Display currency of this value.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `amount` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"Value rendered in whole units.","examples":["125288.75"]}},"required":["amount","currency","decimals","formatted"],"additionalProperties":false},{"type":"null"}]},"vaultAddress":{"description":"Earn vault contract address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"verified":{"type":"boolean","description":"Whether this vault is in the curated earn registry.","examples":[true]},"zone":{"description":"Curated private Zone route, when requested, or null when absent.","anyOf":[{"type":"object","properties":{"chainId":{"description":"Private Zone chain id.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[421700001]},"inputTokens":{"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tokens accepted by private deposits.","examples":[["0x20c0000000000000000000006fd9a167923ba194"]]},"name":{"type":"string","description":"Private Zone name.","examples":["zone-mainnet-internal"]},"outputTokens":{"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tokens supported by private redemptions.","examples":[["0x20c0000000000000000000006fd9a167923ba194"]]}},"required":["chainId","inputTokens","name","outputTokens"],"additionalProperties":false,"description":"Private Zone route configured for a verified vault."},{"type":"null"}]},"zones":{"description":"Curated private Zone routes, when requested.","type":"array","items":{"type":"object","properties":{"chainId":{"description":"Private Zone chain id.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[421700001]},"deploymentBlock":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Parent-chain block that deployed the Earn router.","examples":[35816964]},"earnRouter":{"description":"Parent-chain router for this Zone and Earn vault.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"inputTokens":{"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tokens accepted by private deposits.","examples":[["0x20c0000000000000000000006fd9a167923ba194"]]},"name":{"type":"string","description":"Private Zone name.","examples":["zone-mainnet-internal"]},"outputTokens":{"type":"array","items":{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tokens returned by private redemptions.","examples":[["0x20c0000000000000000000006fd9a167923ba194"]]}},"required":["chainId","deploymentBlock","earnRouter","inputTokens","name","outputTokens"],"additionalProperties":false,"description":"Verified Earn route through one private Zone."},"examples":[[{"chainId":421700001,"deploymentBlock":35816964,"earnRouter":"0x8117e0ba6239b9695f780deb010f72a2fa4bdfb6","inputTokens":["0x20c0000000000000000000006fd9a167923ba194"],"name":"zone-mainnet-internal","outputTokens":["0x20c0000000000000000000006fd9a167923ba194"]}]]},"meta":{"type":"object","properties":{"valuation":{"$ref":"#/components/schemas/ValuationPricing"}},"description":"Rate provenance for valued fields."}},"required":["assetToken","description","engine","id","instantLiquidity","label","sharePrice","shareToken","slug","state","vaultAddress","verified"],"additionalProperties":false,"description":"A compatible earn vault resolved from chain state, with rate provenance for its valued fields."}}},"description":"One compatible earn vault.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"},"example":{"error":{"code":"query_invalid","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EarnVaultNotFoundError"},"example":{"error":{"code":"earn_vault_not_found","message":"No compatible earn vault was found at this address."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No compatible earn vault was found at this address."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read earn vault data."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read earn vault data."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get vault","tags":["Earn"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/exchange/pairs/{base}":{"get":{"operationId":"getPair","parameters":[{"in":"path","name":"base","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"required":true,"description":"Base token address for the trading pair."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["tokens"]},"examples":[["tokens"]]},"description":"Comma-separated optional resources to embed, e.g. `tokens`."}],"description":"Get one trading pair by its base token address. On Tempo, the quote token for a pair is determined from the base token onchain.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangePair"}}},"description":"Details for one exchange trading pair.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrPairInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairNotFoundError"},"example":{"error":{"code":"pair_not_found","message":"No exchange pair was found for that base token."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No exchange pair was found for that base token."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The indexer could not serve the exchange data right now."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The indexer could not serve the exchange data right now."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get pair","tags":["Exchange"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/exchange/orders/{orderId}":{"get":{"operationId":"getOrder","parameters":[{"in":"path","name":"orderId","schema":{"type":"string","pattern":"^\\d+$","examples":["1"]},"required":true,"description":"On-chain order id, returned as a decimal string."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["tokens"]},"examples":[["tokens"]]},"description":"Comma-separated optional resources to embed, e.g. `tokens`."}],"description":"Get one order by id, using live onchain state for fields such as the remaining amount.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeOrder"}}},"description":"Details for one exchange order.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrOrderInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderNotFoundError"},"example":{"error":{"code":"order_not_found","message":"No exchange order was found for that id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No exchange order was found for that id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The Tempo RPC node could not serve the exchange data right now."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The Tempo RPC node could not serve the exchange data right now."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get order","tags":["Exchange"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/transactions/{transactionHash}/receipt":{"get":{"operationId":"getReceipt","parameters":[{"in":"path","name":"transactionHash","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{64}$","examples":["0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665"]},"required":true,"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies the transaction."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["feeToken.logoUri","feeToken.verified"]},"examples":[["feeToken.logoUri","feeToken.verified"]]},"description":"Comma-separated fee-token fields to include, such as `feeToken.logoUri,feeToken.verified`."},{"in":"query","name":"valuation.currency","schema":{"type":"string","pattern":"^[a-zA-Z]{3}$","examples":["AUD"]},"description":"Currency to denominate values in (case-insensitive, e.g. `AUD`). Must be priced by the configured FX oracle."}],"description":"Get the outcome of one transaction by its transaction hash.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionReceipt"}}},"description":"A single transaction receipt with status, gas, fees, and logs.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrTransactionInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceiptNotFoundError"},"example":{"error":{"code":"receipt_not_found","message":"No receipt was found for that transaction hash."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No receipt was found for that transaction hash."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read receipt or token data from upstream JSON-RPC."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read receipt or token data from upstream JSON-RPC."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get a transaction receipt","tags":["Transactions"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/tokens/{token}/logo":{"get":{"operationId":"getTokenLogo","parameters":[{"in":"path","name":"token","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"required":true,"description":"The TIP-20 token contract address on Tempo."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."}],"description":"Returns the logo image for a TIP-20 token, using Tempo’s curated asset when available.","responses":{"200":{"content":{"image/*":{}},"description":"The token logo image.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrTokenInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The request parameters were invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The request parameters were invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"The API key is missing or invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The API key is missing or invalid."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"The API key cannot access this resource."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The API key cannot access this resource."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenLogoNotFoundError"},"example":{"error":{"code":"token_logo_not_found","message":"No logo image was found for this token."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No logo image was found for this token."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"An upstream RPC request failed while fetching the logo."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"An upstream RPC request failed while fetching the logo."}},"summary":"Get token logo","tags":["Tokens"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/webhooks/{id}/deliveries":{"get":{"operationId":"listWebhookDeliveries","parameters":[{"in":"path","name":"id","schema":{"type":"string","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Webhook subscription ID (`wh_…`)."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["totalCount"]},"examples":[["totalCount"]]},"description":"Comma-separated optional resources to embed, e.g. `totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."}],"description":"List delivery attempts for a webhook subscription.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveryList"}}},"description":"A newest-first page of webhook delivery attempts.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The webhook ID or query parameters are invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The webhook ID or query parameters are invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"webhook_not_found","message":"No webhook subscription was found for that ID."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No webhook subscription was found for that ID."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List webhook deliveries","tags":["Webhooks"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["webhooks:read"]}},"/gecko/{chainId}/assets/{address}":{"get":{"operationId":"coingeckoAsset","parameters":[{"in":"path","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"required":true,"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`)."},{"in":"path","name":"address","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"required":true,"description":"TIP-20 token contract address for the asset."}],"description":"Returns one TIP-20 asset by contract address in GeckoTerminal format.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinGeckoAssetResponse"}}},"description":"A TIP-20 token in CoinGecko’s GeckoTerminal asset format.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressInvalidOrApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"not_found","message":"No TIP-20 asset was found for that address."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No TIP-20 asset was found for that address."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Tempo RPC could not resolve the requested asset."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Tempo RPC could not resolve the requested asset."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get asset","tags":["CoinGecko"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/gecko/{chainId}/pairs/{pairId}":{"get":{"operationId":"coingeckoPair","parameters":[{"in":"path","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"required":true,"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`)."},{"in":"path","name":"pairId","schema":{"type":"string","examples":["0x44f7b8011db3e3647a530b4ff635726de5fafc8fa8ad10f0f31c0eb9dd52fc65"]},"required":true,"description":"32-byte onchain order-book key for this trading pair."}],"description":"Returns one Tempo stablecoin DEX trading pair in GeckoTerminal format.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoinGeckoPairResponse"}}},"description":"One trading pair in GeckoTerminal format.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrPairIdInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotFoundError"},"example":{"error":{"code":"not_found","message":"No trading pair was found for that id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No trading pair was found for that id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Tempo RPC or the upstream indexer could not complete the request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Tempo RPC or the upstream indexer could not complete the request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get trading pair","tags":["CoinGecko"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/funding/deposit-addresses/{id}":{"get":{"operationId":"getFundingDepositAddress","parameters":[{"in":"path","name":"id","schema":{"type":"string","pattern":"^fda_[A-Za-z0-9_-]+$","examples":["fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Funding deposit address ID (`fda_…`)."}],"description":"Returns one reusable funding deposit address.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingDepositAddress"},"example":{"address":"TJRabPrwbZy45sbavfcjinPJC18kjpRTv8","createdAt":"2026-08-04T00:00:00.000Z","destinationChain":{"addressFormat":"hex","id":"eip155:4217","kind":"evm","name":"Tempo"},"destinationToken":{"address":"0x20c00000000000000000000014f22ca97301eb73","currency":"USD","decimals":6,"name":"USDT0","standard":"TIP-20","symbol":"USDT0","tokenKey":"eip155:4217/erc20:0x20c00000000000000000000014f22ca97301eb73","verified":true},"id":"fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx","provider":{"id":"relay","name":"Relay"},"recipient":"0x1111111111111111111111111111111111111111","refundAddress":"TJRabPrwbZy45sbavfcjinPJC18kjpRTv8","sourceChain":{"addressFormat":"base58check","id":"tron:0x2b6653dc","kind":"tron","name":"Tron"},"sourceToken":{"address":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","currency":"USD","decimals":6,"name":"Tether USD","standard":"TRC-20","symbol":"USDT","tokenKey":"tron:0x2b6653dc/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","verified":true},"status":"active","subsidize":false,"updatedAt":"2026-08-04T00:00:00.000Z"}}},"description":"The requested funding deposit address.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingDepositAddressNotFoundError"},"example":{"error":{"code":"funding_deposit_address_not_found","message":"No visible funding deposit address exists for the identifier."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No visible funding deposit address exists for the identifier."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get deposit address","tags":["Deposit Addresses"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["funding:read"]}},"/v1/funding/transfers/{id}":{"get":{"operationId":"getFundingTransfer","parameters":[{"in":"path","name":"id","schema":{"type":"string","examples":["ftr_001785729600000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Funding transfer ID (`ftr_…`)."}],"description":"Returns a transfer by ID.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingTransfer"},"example":{"createdAt":"2026-01-01T00:00:00.000Z","destinationAmount":{"baseUnits":"979295","currency":"USD","decimals":6,"formatted":"0.979295"},"destinationAmountMin":{"baseUnits":"939242","currency":"USD","decimals":6,"formatted":"0.939242"},"destinationChain":{"addressFormat":"hex","id":"eip155:4217","kind":"evm","name":"Tempo"},"destinationToken":{"address":"0x20c0000000000000000000000000000000000000","currency":"USD","decimals":6,"name":"PathUSD","standard":"TIP-20","symbol":"pathUSD","tokenKey":"eip155:4217/erc20:0x20c0000000000000000000000000000000000000","verified":true},"fees":[{"amount":{"baseUnits":"20705","currency":"USD","decimals":6,"formatted":"0.020705"},"side":"source","token":{"address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","currency":"USD","decimals":6,"name":"USD Coin","standard":"ERC-20","symbol":"USDC","tokenKey":"eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","verified":true},"type":"provider"}],"id":"ftr_001767225600000_2ZPE2gvateYEQ0dQslgvkhjx","method":"transaction","mode":"exactSource","provider":{"id":"relay","name":"Relay"},"quote":{"expiresAt":"2026-01-01T00:01:00.000Z","sampledAt":"2026-01-01T00:00:00.000Z"},"recipient":"0x1111111111111111111111111111111111111111","sender":"0x2222222222222222222222222222222222222222","sourceAmount":{"baseUnits":"1000000","currency":"USD","decimals":6,"formatted":"1"},"sourceChain":{"addressFormat":"hex","id":"eip155:8453","kind":"evm","name":"Base"},"sourceToken":{"address":"0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","currency":"USD","decimals":6,"name":"USD Coin","standard":"ERC-20","symbol":"USDC","tokenKey":"eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913","verified":true},"status":"awaiting-source","updatedAt":"2026-01-01T00:00:00.000Z","version":1}}},"description":"The requested funding transfer.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingTransferNotFoundError"},"example":{"error":{"code":"funding_transfer_not_found","message":"No visible funding transfer exists for the identifier."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No visible funding transfer exists for the identifier."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get transfer","tags":["Funding Transfers"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["funding:read"]}},"/v1/orgs/{orgId}/billing":{"get":{"operationId":"getBilling","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"query","name":"environment","schema":{"default":"production","examples":["sandbox"],"type":"string","enum":["production","sandbox"]},"description":"Resource environment."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Billing"}}},"description":"The organization's billing state.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid query."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid query."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get billing","tags":["Billing"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:read"]},"patch":{"operationId":"updateBilling","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"query","name":"environment","schema":{"default":"production","examples":["sandbox"],"type":"string","enum":["production","sandbox"]},"description":"Resource environment."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBillingRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Billing"}}},"description":"The organization's updated billing state.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, invalid query, or invalid body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, invalid query, or invalid body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Update billing","tags":["Billing"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]}},"/v1/addresses/{address}/balances/{token}":{"get":{"operationId":"getAddressBalance","parameters":[{"in":"path","name":"address","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"required":true,"description":"The account address whose token balance you want to read."},{"in":"path","name":"token","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"required":true,"description":"The TIP-20 token contract address."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"valuation.currency","schema":{"type":"string","pattern":"^[a-zA-Z]{3}$","examples":["AUD"]},"description":"When present, include the holding’s nominal value in this denomination. Case-insensitive and must be priced by the configured FX oracle."}],"description":"Returns the live balance of one TIP-20 token held by an account, including token metadata and a human-readable amount.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Balance"}}},"description":"The requested token balance for this account.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddressInvalidOrApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenNotFoundError"},"example":{"error":{"code":"token_not_found","message":"The token is not a registered TIP-20 token."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The token is not a registered TIP-20 token."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read balance or token data from an upstream service."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read balance or token data from an upstream service."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get address balance","tags":["Balances"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/exchange/pairs/{base}/ohlc":{"get":{"operationId":"getPairOhlc","parameters":[{"in":"path","name":"base","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"required":true,"description":"Base token address for the trading pair."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["tokens"]},"examples":[["tokens"]]},"description":"Comma-separated optional resources to embed, e.g. `tokens`."},{"in":"query","name":"interval","schema":{"default":"1h","examples":["1h"],"type":"string","enum":["1m","5m","15m","1h","4h","1d"]},"description":"Time size for each OHLC candle bucket."},{"in":"query","name":"window","schema":{"default":"24h","examples":["24h"],"type":"string","enum":["1h","24h","7d","30d"]},"description":"Rolling time window covered by the OHLC candles."}],"description":"Get OHLC price candles for one trading pair. OHLC means open, high, low, and close over each time bucket for charting.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangePairOhlc"}}},"description":"OHLC candle data for the pair.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrPairInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairNotFoundError"},"example":{"error":{"code":"pair_not_found","message":"No exchange pair was found for that base token."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No exchange pair was found for that base token."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The indexer could not serve the exchange data right now."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The indexer could not serve the exchange data right now."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get pair OHLC","tags":["Exchange"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/exchange/pairs/{base}/depth":{"get":{"operationId":"getPairDepth","parameters":[{"in":"path","name":"base","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"required":true,"description":"Base token address for the trading pair."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["tokens"]},"examples":[["tokens"]]},"description":"Comma-separated optional resources to embed, e.g. `tokens`."},{"in":"query","name":"levels","schema":{"default":50,"examples":[50],"type":"integer","minimum":1,"maximum":200},"description":"Maximum number of non-empty price levels to return per side (1-200)."}],"description":"Get orderbook depth for one trading pair. Depth shows resting liquidity at price ticks on both sides of the book.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangePairDepth"}}},"description":"Orderbook depth data for the pair.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrPairInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairNotFoundError"},"example":{"error":{"code":"pair_not_found","message":"No exchange pair was found for that base token."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No exchange pair was found for that base token."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The Tempo RPC node could not serve the exchange data right now."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The Tempo RPC node could not serve the exchange data right now."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get pair depth","tags":["Exchange"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/orgs/{orgId}/billing/payment-methods":{"get":{"operationId":"getBillingPaymentMethods","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"query","name":"environment","schema":{"default":"production","examples":["sandbox"],"type":"string","enum":["production","sandbox"]},"description":"Resource environment."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingPaymentMethodList"}}},"description":"The organization's payment methods.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid query."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid query."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotImplementedError"},"example":{"error":{"code":"billing_unconfigured","message":"Billing is not configured on this deployment."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Billing is not configured on this deployment."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get payment methods","tags":["Billing"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:read"]}},"/v1/orgs/{orgId}/projects/{projectId}":{"get":{"operationId":"getProject","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"path","name":"projectId","schema":{"type":"string","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The project id (`prj_…`)."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"One project.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path parameters."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path parameters."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundOrProjectNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible project was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible project was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get project","tags":["Projects"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:read"]},"patch":{"operationId":"updateProject","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"path","name":"projectId","schema":{"type":"string","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The project id (`prj_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"The updated project.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path parameters, or invalid request body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path parameters, or invalid request body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundOrProjectNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible project was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible project was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Update project","tags":["Projects"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]},"delete":{"operationId":"deleteProject","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"path","name":"projectId","schema":{"type":"string","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The project id (`prj_…`)."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteProjectResponse"}}},"description":"Confirmation that the project was deleted.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path parameters."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path parameters."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundOrProjectNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible project was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible project was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Delete project","tags":["Projects"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]}},"/v1/orgs/{orgId}/usage/requests":{"get":{"operationId":"getRequestUsage","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"query","name":"environment","schema":{"examples":["sandbox"],"type":"string","enum":["production","sandbox"]},"description":"Only include requests made with this API-key environment."},{"in":"query","name":"from","schema":{"examples":["2026-01-01T00:00:00Z"],"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"description":"Only include requests at or after this ISO 8601 timestamp."},{"in":"query","name":"interval","schema":{"default":"day","examples":["day"],"type":"string","enum":["day","hour"]},"description":"Time bucket size for the usage series."},{"in":"query","name":"projectId","schema":{"examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"],"type":"string"},"description":"Only include requests attributed to this project (`prj_…`). Omit for organization-wide usage."},{"in":"query","name":"to","schema":{"examples":["2026-01-31T23:59:59Z"],"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"description":"Only include requests at or before this ISO 8601 timestamp."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestUsage"}}},"description":"The request usage.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid query."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid query."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsUnconfiguredError"},"example":{"error":{"code":"analytics_unconfigured","message":"Usage analytics is not configured on this deployment."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Usage analytics is not configured on this deployment."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get request usage","tags":["Usage"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:read"]}},"/v1/orgs/{orgId}/usage/sponsorships":{"get":{"operationId":"getSponsorshipUsage","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"query","name":"environment","schema":{"examples":["production"],"type":"string","enum":["production","sandbox"]},"description":"Only include sponsorships requested under this key environment."},{"in":"query","name":"from","schema":{"examples":["2026-01-01T00:00:00Z"],"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"description":"Window start (ISO 8601), inclusive. Defaults to 30 days before `to`."},{"in":"query","name":"interval","schema":{"default":"day","examples":["day"],"type":"string","enum":["day","hour","month","week"]},"description":"Bucket width, aligned to UTC calendar boundaries."},{"in":"query","name":"projectId","schema":{"examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"],"type":"string"},"description":"Only include sponsorships attributed to this project (`prj_…`)."},{"in":"query","name":"to","schema":{"examples":["2026-01-31T00:00:00Z"],"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"description":"Window end (ISO 8601), exclusive. Defaults to now."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SponsorshipUsage"}}},"description":"The organization's sponsorship usage series.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid query."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid query."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get sponsorship usage","tags":["Usage"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:read"]}},"/v1/earn/vaults/{vaultId}/positions/{address}":{"get":{"operationId":"getEarnVaultPosition","parameters":[{"in":"path","name":"address","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"required":true,"description":"Account whose earn position to read."},{"in":"path","name":"vaultId","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x4f94590b636f5878bce585e82379de81e1ec174f"]},"required":true,"description":"Earn vault contract address."},{"in":"query","name":"asOf","schema":{"examples":["2026-07-21T09:00:00.000Z"],"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"description":"ISO 8601 timestamp at which to read the position. Resolves the latest indexed block at or before this time."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."}],"description":"Gets an account’s direct or Zone-routed balances and asset value for one earn vault, optionally at an ISO 8601 timestamp.","responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"account":{"description":"Account whose earn position was read.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"assetAllowance":{"type":"string","pattern":"^\\d+$","description":"Assets the vault may spend from a direct account, in asset base units. Always zero for Zone-routed positions, which use Zone withdrawals instead of approvals.","examples":["0"]},"assetBalance":{"type":"string","pattern":"^\\d+$","description":"Assets held by this account at the observation block, in asset base units.","examples":["250000000"]},"assetToken":{"description":"TIP-20 asset token accepted by the vault or its selected Zone route.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"chainId":{"description":"Chain containing the account position.","anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[42431]},"id":{"description":"Stable resource ID for this vault position, equal to the account address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"shareAllowance":{"type":"string","pattern":"^\\d+$","description":"Earn shares the vault may spend from a direct account, in share base units. Always zero for Zone-routed positions, which use Zone withdrawals instead of approvals.","examples":["0"]},"shareBalance":{"type":"string","pattern":"^\\d+$","description":"Earn shares held by this account at the observation block, in share base units.","examples":["99500000"]},"shareToken":{"description":"TIP-20 token representing earn shares.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000300e14ab91a10769"]},"value":{"type":"string","pattern":"^\\d+$","description":"Asset value of this account’s earn shares at the observation block, including fees, in `valueToken` base units.","examples":["100000000"]},"valueToken":{"description":"TIP-20 asset denominating `value` on the vault’s parent chain.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c000000000000000000000b9537d11c60e8b50"]},"asOf":{"description":"Requested historical observation time, when supplied.","examples":["2026-07-21T09:00:00.000Z"],"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"block":{"description":"Indexed block used for a historical Earn position observation, when requested.","type":"object","properties":{"number":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Indexed observation block.","examples":[31039238]},"timestamp":{"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":"Timestamp of the indexed observation block.","examples":["2026-07-21T09:00:00.000Z"]}},"required":["number","timestamp"],"additionalProperties":false}},"required":["account","assetAllowance","assetBalance","assetToken","chainId","id","shareAllowance","shareBalance","shareToken","value","valueToken"],"additionalProperties":false,"description":"Current or historical asset and earn-share balances, allowances, and asset value for an account in one earn vault."}}},"description":"Current or historical earn position for one account in one vault.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrPositionInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EarnVaultNotFoundError"},"example":{"error":{"code":"earn_vault_not_found","message":"No compatible earn vault was found at the supplied vault address."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No compatible earn vault was found at the supplied vault address."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read the earn vault position."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read the earn vault position."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get account position","tags":["Earn"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/earn/vaults/{vaultId}/earnings/{address}":{"get":{"operationId":"getEarnVaultEarnings","parameters":[{"in":"path","name":"address","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"required":true,"description":"Account whose vault earnings to read."},{"in":"path","name":"vaultId","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xf4ae63687d6753a78e7f551d2eda1d0d31a5ea3a"]},"required":true,"description":"Earn vault contract address."},{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"period","schema":{"default":"lifetime","type":"string","enum":["30d","active","lifetime"],"examples":["lifetime"]},"description":"Earnings period to calculate: trailing 30 days, shares still held, or lifetime history."}],"description":"Gets an account’s indexed asset value and earnings for lifetime history, the trailing 30 days, or shares still held.","responses":{"200":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"account":{"description":"Account whose vault earnings were calculated.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"assetToken":{"description":"TIP-20 asset token accepted by the vault.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"currentValue":{"type":"string","pattern":"^\\d+$","description":"Asset value of the account’s active earn shares at the latest indexed block, in asset base units.","examples":["600000"]},"id":{"description":"Stable resource ID for these vault earnings, equal to the account address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"lifetimeEarnings":{"type":"string","pattern":"^-?\\d+$","description":"Current share value plus completed redemptions, exact withdrawals, and finalized async assets, minus asset deposits, at the latest indexed block.","examples":["0"]},"totalDeposited":{"type":"string","pattern":"^\\d+$","description":"Assets deposited with this account as receiver over complete indexed vault history.","examples":["1000000"]},"totalWithdrawn":{"type":"string","pattern":"^\\d+$","description":"Assets returned by completed redemptions and exact withdrawals initiated by this account over complete indexed vault history.","examples":["1000000"]},"period":{"type":"string","const":"lifetime","description":"Returns lifetime net asset earnings.","examples":["lifetime"]},"status":{"type":"string","const":"complete","description":"Earnings include a complete asset-denominated cost basis.","examples":["complete"]}},"required":["account","assetToken","currentValue","id","lifetimeEarnings","totalDeposited","totalWithdrawn","period","status"],"additionalProperties":false},{"type":"object","properties":{"account":{"description":"Account whose vault earnings were calculated.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"assetToken":{"description":"TIP-20 asset token accepted by the vault.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"currentValue":{"type":"string","pattern":"^\\d+$","description":"Asset value of the account’s active earn shares at the latest indexed block, in asset base units.","examples":["600000"]},"id":{"description":"Stable resource ID for these vault earnings, equal to the account address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"activeEarnings":{"type":"string","pattern":"^-?\\d+$","description":"Current share value minus the weighted-average asset cost basis of shares still held, at the latest indexed block.","examples":["0"]},"period":{"type":"string","const":"active","description":"Returns earnings on shares still held.","examples":["active"]},"status":{"type":"string","const":"complete","description":"Earnings include a complete asset-denominated cost basis.","examples":["complete"]}},"required":["account","assetToken","currentValue","id","activeEarnings","period","status"],"additionalProperties":false},{"type":"object","properties":{"account":{"description":"Account whose vault earnings were calculated.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"assetToken":{"description":"TIP-20 asset token accepted by the vault.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"currentValue":{"type":"string","pattern":"^\\d+$","description":"Asset value of the account’s active earn shares at the latest indexed block, in asset base units.","examples":["600000"]},"id":{"description":"Stable resource ID for these vault earnings, equal to the account address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"period":{"type":"string","const":"30d","description":"Returns cash-flow-adjusted earnings over the trailing 30 days.","examples":["30d"]},"status":{"type":"string","const":"complete","description":"Earnings include a complete asset-denominated cost basis.","examples":["complete"]},"windowEarnings":{"type":"string","pattern":"^-?\\d+$","description":"Ending share value plus realized assets, minus deposits and opening share value, over the trailing 30 days.","examples":["0"]}},"required":["account","assetToken","currentValue","id","period","status","windowEarnings"],"additionalProperties":false},{"type":"object","properties":{"account":{"description":"Account whose vault earnings were calculated.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"assetToken":{"description":"TIP-20 asset token accepted by the vault.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"currentValue":{"type":"string","pattern":"^\\d+$","description":"Asset value of the account’s active earn shares at the latest indexed block, in asset base units.","examples":["600000"]},"id":{"description":"Stable resource ID for these vault earnings, equal to the account address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"period":{"type":"string","enum":["30d","active","lifetime"],"description":"Earnings period to calculate: trailing 30 days, shares still held, or lifetime history.","examples":["lifetime"]},"status":{"type":"string","const":"incomplete_cost_basis","description":"Earnings are unavailable when indexed activity cannot reconstruct the asset cost basis for the requested period.","examples":["incomplete_cost_basis"]}},"required":["account","assetToken","currentValue","id","period","status"],"additionalProperties":false},{"type":"object","properties":{"account":{"description":"Account whose vault earnings were calculated.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"assetToken":{"description":"TIP-20 asset token accepted by the vault.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"currentValue":{"type":"string","pattern":"^\\d+$","description":"Asset value of the account’s active earn shares at the latest indexed block, in asset base units.","examples":["600000"]},"id":{"description":"Stable resource ID for these vault earnings, equal to the account address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"period":{"type":"string","const":"30d","description":"Trailing period with an unresolved async redemption.","examples":["30d"]},"status":{"type":"string","const":"pending_redemption","description":"Earnings are unavailable while an async redemption remains open.","examples":["pending_redemption"]}},"required":["account","assetToken","currentValue","id","period","status"],"additionalProperties":false},{"type":"object","properties":{"account":{"description":"Account whose vault earnings were calculated.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"assetToken":{"description":"TIP-20 asset token accepted by the vault.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0x20c0000000000000000000000000000000000000"]},"currentValue":{"type":"string","pattern":"^\\d+$","description":"Asset value of the account’s active earn shares at the latest indexed block, in asset base units.","examples":["600000"]},"id":{"description":"Stable resource ID for these vault earnings, equal to the account address.","type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"period":{"type":"string","const":"lifetime","description":"Lifetime period with an unresolved async redemption.","examples":["lifetime"]},"status":{"type":"string","const":"pending_redemption","description":"Earnings are unavailable while an async redemption remains open.","examples":["pending_redemption"]},"totalDeposited":{"type":"string","pattern":"^\\d+$","description":"Assets deposited over complete indexed vault history.","examples":["1000000"]},"totalWithdrawn":{"type":"string","pattern":"^\\d+$","description":"Assets withdrawn over complete indexed vault history.","examples":["1000000"]}},"required":["account","assetToken","currentValue","id","period","status","totalDeposited","totalWithdrawn"],"additionalProperties":false}],"description":"Indexed asset value and cost-basis-aware earnings for an account in one earn vault."}}},"description":"Cost-basis-aware earnings for one account in one vault.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedOrEarningsInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EarnVaultNotFoundError"},"example":{"error":{"code":"earn_vault_not_found","message":"No compatible earn vault was found at this address."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No compatible earn vault was found at this address."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Could not read the earn vault earnings."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Could not read the earn vault earnings."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get vault earnings","tags":["Earn"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/orgs/{orgId}/webhooks/{id}/deliveries":{"get":{"operationId":"listOrgWebhookDeliveries","parameters":[{"in":"path","name":"id","schema":{"type":"string","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Webhook subscription id (`wh_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["totalCount"]},"examples":[["totalCount"]]},"description":"Comma-separated optional resources to embed, e.g. `totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"page","schema":{"examples":[1],"type":"integer","minimum":1,"maximum":9007199254740991},"description":"Page number, 1-indexed (positional pagination for page-numbered access; `page=1` is the head page). Mutually exclusive with `cursor`, and `page × limit` must be at most 500 rows — use cursor pagination for deeper traversal. Pages are positional, so rows arriving at the head of a live feed can shift page contents."}],"hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWebhookDeliveryList"}}},"description":"A newest-first page of webhook delivery attempts.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The path or query parameters are invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The path or query parameters are invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundOrWebhookNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization, webhook, or webhook capability was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization, webhook, or webhook capability was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List webhook deliveries","tags":["Webhooks"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/exchange/quotes":{"post":{"operationId":"createExchangeQuote","parameters":[{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["token.logoUri","token.verified"]},"examples":[["token.logoUri","token.verified"]]},"description":"Comma-separated token fields to include, such as `token.logoUri,token.verified`."},{"in":"query","name":"valuation.currency","schema":{"type":"string","pattern":"^[a-zA-Z]{3}$","examples":["AUD"]},"description":"Currency to denominate values in (case-insensitive, e.g. `AUD`). Must be priced by the configured FX oracle."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateExchangeQuoteRequest"}}}},"description":"Attempts exchange providers in priority order and returns the first executable quote. This endpoint does not submit a transaction.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeQuote"}}},"description":"A provider-neutral quote and its next execution action.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrQuoteAmountOutOfRangeError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QuoteNotAvailableError"},"example":{"error":{"code":"quote_not_available","message":"No configured provider can price an executable exchange for these terms."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No configured provider can price an executable exchange for these terms."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The Tempo RPC could not quote the swap or resolve token metadata."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The Tempo RPC could not quote the swap or resolve token metadata."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create quote","tags":["Exchange"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/auth/siwe/challenge":{"post":{"operationId":"createSiweChallenge","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Single-use EIP-4361 (SIWE) message to sign and submit for verification.","examples":["api.tempo.xyz wants you to sign in with your Ethereum account:\n0x0000000000000000000000000000000000000000\n\nURI: https://api.tempo.xyz\nVersion: 1\nChain ID: 0\nNonce: 3D0sZfnHqTBmc9tKR\nIssued At: 2026-01-01T00:00:00.000Z\nExpiration Time: 2026-01-01T00:10:00.000Z"]}},"required":["message"]}}},"description":"The challenge message to sign.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed request body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed request body."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"description":"Issues a single-use SIWE challenge message to sign. The challenge expires after a short TTL.","summary":"Create challenge (SIWE)","tags":["Authentication"],"security":[{}]}},"/v1/webhooks/{id}/ping":{"post":{"operationId":"pingWebhook","parameters":[{"in":"path","name":"id","schema":{"type":"string","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Webhook subscription ID (`wh_…`)."}],"description":"Send a signed `ping` event to your webhook URL to test delivery and signature verification.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PingWebhookResponse"}}},"description":"Result of the synthetic ping delivery.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The webhook ID is invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The webhook ID is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"webhook_not_found","message":"No webhook subscription was found for that ID."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No webhook subscription was found for that ID."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Ping webhook","tags":["Webhooks"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["webhooks:write"]}},"/v1/funding/deposits/{id}":{"get":{"operationId":"getFundingDeposit","parameters":[{"in":"path","name":"id","schema":{"type":"string","pattern":"^fdp_[A-Za-z0-9_-]+$","examples":["fdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Funding deposit id (`fdp_…`)."}],"description":"Returns one detected deposit and its delivery status.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingDeposit"},"example":{"createdAt":"2026-08-04T00:01:00.000Z","depositAddressId":"fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx","detectionTrigger":"webhook","destinationChain":{"addressFormat":"hex","id":"eip155:4217","kind":"evm","name":"Tempo"},"destinationToken":{"address":"0x20c00000000000000000000014f22ca97301eb73","currency":"USD","decimals":6,"name":"USDT0","standard":"TIP-20","symbol":"USDT0","tokenKey":"eip155:4217/erc20:0x20c00000000000000000000014f22ca97301eb73","verified":true},"id":"fdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx","provider":{"id":"relay","name":"Relay"},"recipient":"0x1111111111111111111111111111111111111111","refundAddress":"TJRabPrwbZy45sbavfcjinPJC18kjpRTv8","sourceChain":{"addressFormat":"base58check","id":"tron:0x2b6653dc","kind":"tron","name":"Tron"},"sourceToken":{"address":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","currency":"USD","decimals":6,"name":"Tether USD","standard":"TRC-20","symbol":"USDT","tokenKey":"tron:0x2b6653dc/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","verified":true},"sourceTransactionHashes":["9f2c4c80dbb468878baa8c07ff523e0464bf6437f2a486268508485d83f14d12"],"status":"detected","updatedAt":"2026-08-04T00:01:00.000Z"}}},"description":"The requested funding deposit.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingDepositNotFoundError"},"example":{"error":{"code":"funding_deposit_not_found","message":"No visible funding deposit exists for the identifier."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No visible funding deposit exists for the identifier."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Get deposit","tags":["Deposit Addresses"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["funding:read"]}},"/v1/orgs/{orgId}/webhooks/{id}":{"patch":{"operationId":"updateOrgWebhook","parameters":[{"in":"path","name":"id","schema":{"type":"string","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Webhook subscription id (`wh_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationWebhookRequest"}}}},"hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationWebhook"}}},"description":"Updated webhook.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The path parameters or request body are invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The path parameters or request body are invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Organization admin access is required."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Organization admin access is required."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundOrWebhookNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization, webhook, or webhook capability was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization, webhook, or webhook capability was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Update webhook","tags":["Webhooks"],"security":[{"session":[]},{"bearerAuth":[]}]},"delete":{"operationId":"deleteOrgWebhook","parameters":[{"in":"path","name":"id","schema":{"type":"string","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Webhook subscription id (`wh_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteOrganizationWebhookResponse"}}},"description":"Deleted webhook.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The path parameters are invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The path parameters are invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Organization admin access is required."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Organization admin access is required."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundOrWebhookNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization, webhook, or webhook capability was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization, webhook, or webhook capability was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Delete webhook","tags":["Webhooks"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/webhooks/{id}/deliveries/{deliveryId}/retry":{"post":{"operationId":"retryWebhookDelivery","parameters":[{"in":"path","name":"deliveryId","schema":{"type":"string","examples":["whd_001718668800000_C1yJkk7CuML98HFthEDk9PsY"]},"required":true,"description":"Delivery ID (`whd_…`) you want Tempo to replay."},{"in":"path","name":"id","schema":{"type":"string","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Webhook subscription ID (`wh_…`)."}],"description":"Replay a previous webhook delivery and update the delivery result.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetryWebhookDeliveryResponse"}}},"description":"Result of replaying the webhook delivery.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The webhook or delivery ID is invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The webhook or delivery ID is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliveryNotFoundOrWebhookNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"webhook_not_found","message":"No webhook subscription or delivery was found for those IDs."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No webhook subscription or delivery was found for those IDs."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Retry webhook delivery","tags":["Webhooks"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["webhooks:write"]}},"/v1/orgs/{orgId}/billing/stripe/checkout":{"post":{"operationId":"createStripeCheckout","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"query","name":"environment","schema":{"default":"production","examples":["sandbox"],"type":"string","enum":["production","sandbox"]},"description":"Resource environment."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSession"}}},"description":"A Stripe Checkout (setup mode) session for attaching a payment method.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid query."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid query."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyForbiddenOrApiKeyIpForbiddenOrBillingSourceDisabledOrForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Requires the owner role and Stripe billing enabled."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Requires the owner role and Stripe billing enabled."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotImplementedError"},"example":{"error":{"code":"billing_unconfigured","message":"Billing is not configured on this deployment."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Billing is not configured on this deployment."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create checkout session","tags":["Billing"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]}},"/v1/orgs/{orgId}/billing/stripe/manage":{"post":{"operationId":"createStripeManage","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"query","name":"environment","schema":{"default":"production","examples":["sandbox"],"type":"string","enum":["production","sandbox"]},"description":"Resource environment."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingSession"}}},"description":"A Stripe billing-portal session for managing payment methods and invoices.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid query."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid query."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingNotFoundOrOrganizationNotFoundError"},"example":{"error":{"code":"billing_not_found","message":"No accessible organization or billing account was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization or billing account was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotImplementedError"},"example":{"error":{"code":"billing_unconfigured","message":"Billing is not configured on this deployment."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Billing is not configured on this deployment."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Create manage session","tags":["Billing"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]}},"/v1/orgs/{orgId}/webhooks/{id}/deliveries/{deliveryId}/retry":{"post":{"operationId":"retryOrgWebhookDelivery","parameters":[{"in":"path","name":"deliveryId","schema":{"type":"string","examples":["whd_001718668800000_C1yJkk7CuML98HFthEDk9PsY"]},"required":true,"description":"Delivery ID (`whd_…`) you want Tempo to replay."},{"in":"path","name":"id","schema":{"type":"string","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"required":true,"description":"Webhook subscription id (`wh_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetryOrganizationWebhookDeliveryResponse"}}},"description":"Result of replaying the webhook delivery.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The path parameters are invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The path parameters are invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Organization admin access is required."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Organization admin access is required."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliveryNotFoundOrOrganizationNotFoundOrWebhookNotFoundOrWebhooksNotEnabledError"},"example":{"error":{"code":"delivery_not_found","message":"No accessible organization, webhook, delivery, or webhook capability was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization, webhook, delivery, or webhook capability was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Retry webhook delivery","tags":["Webhooks"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/mcp":{"post":{"operationId":"mcpRequest","description":"A stateless streamable-HTTP MCP server: send JSON-RPC 2.0 messages as `POST` with `Accept: application/json, text/event-stream`. Tools mirror the API's data domain, plus `docs_*` documentation search. Anonymous requests allow 100 requests per minute; send `Authorization: Bearer <api key>` for protected tools.","requestBody":{"content":{"application/json":{"example":{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}}},"required":true},"responses":{"200":{"content":{"application/json":{"example":{"jsonrpc":"2.0","id":1,"result":{"tools":[{"name":"search_tools","description":"Search available tools"}]}},"schema":{"type":"object","properties":{"error":{"description":"JSON-RPC error object returned when a message fails.","type":"object","properties":{"code":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Numeric JSON-RPC error code returned by the MCP server."},"data":{"description":"Optional extra error details returned by the MCP server."},"message":{"type":"string","description":"Human-readable JSON-RPC error message."}},"required":["code","message"]},"id":{"description":"Client-supplied JSON-RPC request id used to match responses to requests.","anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}]},"jsonrpc":{"type":"string","const":"2.0","description":"JSON-RPC protocol version; MCP uses `2.0`."},"result":{"description":"Result returned by the MCP method."}},"required":["jsonrpc"],"description":"One MCP JSON-RPC response returned by the server."}}},"description":"JSON-RPC response returned by the MCP server.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"202":{"description":"The message was a notification or client response; there is nothing to return."},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"JSON-RPC error object returned when a message fails.","type":"object","properties":{"code":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Numeric JSON-RPC error code returned by the MCP server."},"data":{"description":"Optional extra error details returned by the MCP server."},"message":{"type":"string","description":"Human-readable JSON-RPC error message."}},"required":["code","message"]},"id":{"description":"Client-supplied JSON-RPC request id used to match responses to requests.","anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}]},"jsonrpc":{"type":"string","const":"2.0","description":"JSON-RPC protocol version; MCP uses `2.0`."},"result":{"description":"Result returned by the MCP method."}},"required":["jsonrpc"],"description":"One MCP JSON-RPC response returned by the server."}}},"description":"Malformed or invalid MCP message, returned as a JSON-RPC error response rather than the standard error envelope. A malformed API key returns the standard `400` envelope instead."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyInvalidError"},"example":{"error":{"code":"api_key_invalid","message":"The presented API key is invalid. Anonymous requests are allowed under the public quota."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The presented API key is invalid. Anonymous requests are allowed under the public quota."},"406":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"description":"JSON-RPC error object returned when a message fails.","type":"object","properties":{"code":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Numeric JSON-RPC error code returned by the MCP server."},"data":{"description":"Optional extra error details returned by the MCP server."},"message":{"type":"string","description":"Human-readable JSON-RPC error message."}},"required":["code","message"]},"id":{"description":"Client-supplied JSON-RPC request id used to match responses to requests.","anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}]},"jsonrpc":{"type":"string","const":"2.0","description":"JSON-RPC protocol version; MCP uses `2.0`."},"result":{"description":"Result returned by the MCP method."}},"required":["jsonrpc"],"description":"One MCP JSON-RPC response returned by the server."}}},"description":"The `Accept` header must include both `application/json` and `text/event-stream`. Returned as a JSON-RPC error response."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"summary":"Call MCP","tags":["MCP"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}]}},"/rpc/{chain}":{"post":{"operationId":"rpcRequest","description":"Sends a single or batch Ethereum JSON-RPC request directly to Tempo. Use `/rpc/testnet`, `/rpc/mainnet`, or `/rpc/:chain` to choose a chain. Zone read scopes permit read-only methods; Zone write scopes also permit signed transaction broadcasts. A Zone token in `X-Authorization-Token` is forwarded to the authenticated Zone RPC. This passthrough is not part of the stable API contract and is supported on a best-effort basis only. It has no compatibility, latency, availability, or data-freshness guarantees, and breaking changes may happen with limited notice.","parameters":[{"description":"Optional chain selector. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","example":"testnet","in":"path","name":"chain","required":false,"schema":{"pattern":"^(mainnet|testnet|[0-9]+)$","type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"error":{"description":"JSON-RPC error object returned when a method fails.","type":"object","properties":{"code":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Numeric JSON-RPC error code returned by the upstream RPC server."},"data":{"description":"Optional extra error details returned by the upstream RPC server."},"message":{"type":"string","description":"Human-readable JSON-RPC error message."}},"required":["code","message"]},"id":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}],"description":"Client-supplied JSON-RPC request id used to match responses to requests."},"jsonrpc":{"type":"string","const":"2.0","description":"JSON-RPC protocol version; Tempo uses `2.0`."},"result":{"description":"Result returned by the upstream RPC method."}},"required":["id","jsonrpc"],"description":"One JSON-RPC response returned by Tempo."},{"minItems":1,"type":"array","items":{"type":"object","properties":{"error":{"description":"JSON-RPC error object returned when a method fails.","type":"object","properties":{"code":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Numeric JSON-RPC error code returned by the upstream RPC server."},"data":{"description":"Optional extra error details returned by the upstream RPC server."},"message":{"type":"string","description":"Human-readable JSON-RPC error message."}},"required":["code","message"]},"id":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"null"}],"description":"Client-supplied JSON-RPC request id used to match responses to requests."},"jsonrpc":{"type":"string","const":"2.0","description":"JSON-RPC protocol version; Tempo uses `2.0`."},"result":{"description":"Result returned by the upstream RPC method."}},"required":["id","jsonrpc"],"description":"One JSON-RPC response returned by Tempo."}}],"description":"A single JSON-RPC response or an array of responses for batch calls."},"example":{"jsonrpc":"2.0","id":1,"result":"0x10f2c"}}},"description":"JSON-RPC response returned by the upstream Tempo RPC endpoint.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrChainIdInvalidOrChainIdUnsupportedError"},"example":{"error":{"code":"api_key_malformed","message":"The chain id is invalid or this API deployment does not support it."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The chain id is invalid or this API deployment does not support it."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The upstream Tempo RPC endpoint could not complete the request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The upstream Tempo RPC endpoint could not complete the request."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Call JSON-RPC","tags":["RPC"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"],"x-openrpc":"/openrpc.json"}},"/v1/auth/siwe":{"post":{"operationId":"verifySiwe","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"description":"Bearer session token; present only when `returnToken` is true.","examples":["aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],"type":"string"}}}}},"description":"Session established. Cookie mode sets `Set-Cookie`; token mode returns `token`.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"},"Set-Cookie":{"description":"Session cookie (`accounts_auth`); omitted when `returnToken` is true.","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable failure reason.","examples":["domain mismatch"]},"issues":{"description":"Field-level validation issues, present on request-schema failures.","type":"array","items":{}}},"required":["error"]}}},"description":"Invalid, expired, or mismatched challenge message; or a required identity token is missing."},"401":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable failure reason.","examples":["domain mismatch"]},"issues":{"description":"Field-level validation issues, present on request-schema failures.","type":"array","items":{}}},"required":["error"]}}},"description":"Signature or identity verification failed."},"409":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable failure reason.","examples":["domain mismatch"]},"issues":{"description":"Field-level validation issues, present on request-schema failures.","type":"array","items":{}}},"required":["error"]}}},"description":"Challenge nonce already used or unknown."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable failure reason.","examples":["domain mismatch"]},"issues":{"description":"Field-level validation issues, present on request-schema failures.","type":"array","items":{}}},"required":["error"]}}},"description":"The Tempo RPC could not verify the signature."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"Wallet address that signed the message; becomes the session subject.","examples":["0x0000000000000000000000000000000000000001"]},"idToken":{"description":"Wallet-minted OIDC identity token (JWT) asserting a verified email, folded onto the session.","examples":["eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIweDAwMDAifQ.c2lnbmF0dXJl"],"type":"string"},"keyAuthorization":{"description":"RLP-serialized signed key authorization (TIP-1053) whose witness binds this message; verification recovers over its digest.","examples":["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"],"type":"string"},"message":{"type":"string","description":"The exact challenge message issued by `POST /v1/auth/siwe/challenge`.","examples":["api.tempo.xyz wants you to sign in with your Ethereum account:\n0x0000000000000000000000000000000000000000\n\nURI: https://api.tempo.xyz\nVersion: 1\nChain ID: 0\nNonce: 3D0sZfnHqTBmc9tKR\nIssued At: 2026-01-01T00:00:00.000Z\nExpiration Time: 2026-01-01T00:10:00.000Z"]},"returnToken":{"description":"Return the session token in the body instead of setting the session cookie.","examples":[true],"type":"boolean"},"signature":{"type":"string","description":"Signature over the challenge message (or the key-authorization digest).","examples":["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]}},"required":["address","message","signature"]}}}},"description":"Verifies the signed challenge and establishes a session. Sets a session cookie by default; pass `returnToken` to receive a bearer token instead.","summary":"Authenticate (SIWE)","tags":["Authentication"],"security":[{}]}},"/v1/indexer/query":{"get":{"operationId":"indexerQuery","description":"Runs a read-only SQL-style query against Tempo’s indexed chain data, with optional live streaming as new blocks arrive.","parameters":[{"description":"Read-only SQL query to run against Tempo’s indexed chain data. Use `SELECT` statements only.","example":"SELECT num, hash, timestamp FROM blocks ORDER BY num DESC LIMIT 10","in":"query","name":"sql","required":true,"schema":{"type":"string"}},{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","example":4217,"in":"query","name":"chainId","required":true,"schema":{"minimum":1,"type":"integer"}},{"description":"ABI event signature to expose as a named SQL CTE, so you can query decoded event fields directly. Repeat this parameter to add multiple signatures.","example":"Transfer(address indexed from, address indexed to, uint256 value)","explode":true,"in":"query","name":"signature","required":false,"schema":{"items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Choose the indexer engine yourself. By default the indexer routes automatically; `clickhouse` cannot be used with `live=true`.","example":"postgres","in":"query","name":"engine","required":false,"schema":{"enum":["postgres","clickhouse"],"type":"string"}},{"description":"Stream results as Server-Sent Events and re-run the query on every new block. This cannot be combined with `engine=clickhouse`.","example":false,"in":"query","name":"live","required":false,"schema":{"default":false,"type":"boolean"}},{"description":"Maximum number of rows to return. The server clamps this to the range 1 through 10,000.","example":10,"in":"query","name":"limit","required":false,"schema":{"default":10000,"maximum":10000,"minimum":1,"type":"integer"}},{"description":"Per-query timeout in milliseconds. The server clamps this to the range 100 through 30,000.","example":5000,"in":"query","name":"timeout_ms","required":false,"schema":{"default":5000,"maximum":30000,"minimum":100,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether the SQL query completed successfully.","examples":[true]},"columns":{"type":"array","items":{"type":"string"},"description":"Column names returned by the query, in row-value order."},"rows":{"type":"array","items":{"type":"array","items":{}},"description":"Query results. Each row is an array of values in the same order as `columns`."},"row_count":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows returned in this response.","examples":[1]},"engine":{"description":"Indexer engine that ran the query.","examples":["postgres"],"type":"string","enum":["postgres","clickhouse","tiered"]},"query_time_ms":{"description":"Server-side query execution time in milliseconds.","examples":[12],"type":"number"}},"required":["ok","columns","rows","row_count"],"description":"Structured result from a Tempo indexer SQL query."},"example":{"ok":true,"columns":["num","hash","timestamp"],"rows":[[1234567,"0x515801d7f9a5ac705e793e85904c9c69b3f1694b465cc8fb6ba3f0298dc82665",1718668800]],"row_count":1,"engine":"postgres","query_time_ms":12}},"text/event-stream":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","description":"Whether the SQL query completed successfully.","examples":[true]},"columns":{"type":"array","items":{"type":"string"},"description":"Column names returned by the query, in row-value order."},"rows":{"type":"array","items":{"type":"array","items":{}},"description":"Query results. Each row is an array of values in the same order as `columns`."},"row_count":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of rows returned in this response.","examples":[1]},"engine":{"description":"Indexer engine that ran the query.","examples":["postgres"],"type":"string","enum":["postgres","clickhouse","tiered"]},"query_time_ms":{"description":"Server-side query execution time in milliseconds.","examples":[12],"type":"number"}},"required":["ok","columns","rows","row_count"],"description":"Structured result from a Tempo indexer SQL query."}}},"description":"Structured result from a Tempo indexer SQL query. When `live=true` the response is a `text/event-stream` (SSE) of `result` events with this same shape, interleaved with `error` and `lagged` events, re-run on every new block.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false,"description":"Always `false` when the indexer returns an error."},"error":{"type":"string","description":"Human-readable error message from the indexer."}},"required":["ok","error"],"description":"Error response returned by the upstream Tempo indexer."}}},"description":"The query parameters are invalid; this uses the upstream indexer’s error shape."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Your API key is missing or invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Your API key is missing or invalid."},"402":{"$ref":"#/components/responses/PaymentRequired"},"422":{"content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":false,"description":"Always `false` when the indexer returns an error."},"error":{"type":"string","description":"Human-readable error message from the indexer."}},"required":["ok","error"],"description":"Error response returned by the upstream Tempo indexer."}}},"description":"The SQL failed validation or execution; this uses the upstream indexer’s error shape."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The upstream Tempo indexer could not complete the request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The upstream Tempo indexer could not complete the request."}},"summary":"Query indexed chain data","tags":["Indexer"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["indexer:query"]}},"/v1/funding/deposits":{"get":{"operationId":"listFundingDeposits","parameters":[{"in":"query","name":"depositAddress","schema":{"examples":["TJRabPrwbZy45sbavfcjinPJC18kjpRTv8"],"type":"string","minLength":1},"description":"Reusable source-chain deposit address that received the funds."},{"in":"query","name":"cursor","schema":{"examples":["WzIzNDU2Nzg5LDBd"],"type":"string"},"description":"Opaque keyset cursor from a previous response (`nextCursor`); pass it back verbatim to fetch the next page. Omit for the first (head) page."},{"in":"query","name":"destinationToken","schema":{"examples":["usdt0"],"type":"string","minLength":1},"description":"Destination token symbol, contract address, or token key."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["totalCount"]},"examples":[["totalCount"]]},"description":"Comma-separated optional resources to embed, e.g. `totalCount`."},{"in":"query","name":"limit","schema":{"type":"integer","minimum":5,"maximum":9007199254740991,"examples":[10]},"description":"How many items to return per page (5–50, default 10). Use `nextCursor` to fetch more."},{"in":"query","name":"provider","schema":{"examples":["relay"],"type":"string","minLength":1},"description":"Funding provider id."},{"in":"query","name":"recipient","schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"description":"Tempo account that received the deposits."},{"in":"query","name":"sourceChain","schema":{"examples":["tron"],"type":"string","minLength":1},"description":"Source chain CAIP-2 id, slug, or alias."},{"in":"query","name":"sourceToken","schema":{"examples":["usdt"],"type":"string","minLength":1},"description":"Source token symbol, contract address, or token key."},{"in":"query","name":"status","schema":{"type":"string","enum":["action-required","bridging","completed","detected","refunded","refunding","settling"],"examples":["detected"]},"description":"Current delivery status of the deposit."}],"description":"Lists visible deposits, optionally filtered, newest first.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundingDepositList"},"example":{"data":[{"createdAt":"2026-08-04T00:01:00.000Z","depositAddressId":"fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx","detectionTrigger":"webhook","destinationChain":{"addressFormat":"hex","id":"eip155:4217","kind":"evm","name":"Tempo"},"destinationToken":{"address":"0x20c00000000000000000000014f22ca97301eb73","currency":"USD","decimals":6,"name":"USDT0","standard":"TIP-20","symbol":"USDT0","tokenKey":"eip155:4217/erc20:0x20c00000000000000000000014f22ca97301eb73","verified":true},"id":"fdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx","provider":{"id":"relay","name":"Relay"},"recipient":"0x1111111111111111111111111111111111111111","refundAddress":"TJRabPrwbZy45sbavfcjinPJC18kjpRTv8","sourceChain":{"addressFormat":"base58check","id":"tron:0x2b6653dc","kind":"tron","name":"Tron"},"sourceToken":{"address":"TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","currency":"USD","decimals":6,"name":"Tether USD","standard":"TRC-20","symbol":"USDT","tokenKey":"tron:0x2b6653dc/trc20:TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t","verified":true},"sourceTransactionHashes":["9f2c4c80dbb468878baa8c07ff523e0464bf6437f2a486268508485d83f14d12"],"status":"detected","updatedAt":"2026-08-04T00:01:00.000Z"}],"meta":{"totalCount":1,"totalCountCapped":false},"nextCursor":null}}},"description":"A page of visible funding deposits.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"List deposits","tags":["Deposit Addresses"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["funding:read"]}},"/v1/invite-links/resolve":{"post":{"operationId":"resolveInviteLink","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLinkTokenRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveInviteLinkResponse"}}},"description":"Active link summary.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLinkNotFoundError"},"example":{"error":{"code":"invite_link_not_found","message":"No active invite link was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No active invite link was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Resolve invite link","tags":["Invite Links"],"security":[{"session":[]},{"bearerAuth":[]},{}]}},"/v1/invite-links/accept":{"post":{"operationId":"acceptInviteLink","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLinkTokenRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptInviteLinkResponse"}}},"description":"Membership.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyForbiddenOrApiKeyIpForbiddenOrForbiddenOrInviteLinkEmailForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"A verified session email from an allowed domain is required."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"A verified session email from an allowed domain is required."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLinkNotFoundError"},"example":{"error":{"code":"invite_link_not_found","message":"No active invite link was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No active invite link was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Accept invite link","tags":["Invite Links"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/mpp/validate":{"post":{"operationId":"validateMppCredential","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"challenge":{"type":"object","properties":{"description":{"description":"A human-readable description of the payment.","examples":["Tempo API payment"],"type":"string"},"expires":{"description":"When the payment challenge expires, as an ISO-8601 timestamp.","examples":["2026-07-21T21:30:00.000Z"],"type":"string"},"id":{"type":"string","description":"The payment challenge identifier.","examples":["ch_01j3j1k2l3m4n5p6q7r8s9t0u"]},"intent":{"type":"string","description":"The MPP payment intent.","examples":["charge"]},"method":{"type":"string","description":"The MPP payment method.","examples":["tempo"]},"opaque":{"description":"Opaque data bound to the challenge by its issuer.","examples":["eyJhbGciOiJIUzI1NiJ9"],"type":"string"},"realm":{"type":"string","description":"The MPP realm that issued the challenge.","examples":["merchant.example"]},"request":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"The payment request bound to the challenge.","examples":[{"amount":"1","currency":"USD"}]}},"required":["id","intent","method","realm","request"],"additionalProperties":{},"description":"An MPP payment challenge."},"payload":{"description":"The method-specific MPP credential payload.","examples":[{"signature":"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","type":"transaction"}]},"source":{"description":"An optional payer identifier supplied with the credential.","examples":["did:pkh:eip155:4217:0x1234567890abcdef1234567890abcdef12345678"],"type":"string"}},"required":["challenge","payload"],"description":"An MPP payment credential and its challenge."}}}},"description":"Checks whether a completed MPP credential can be processed without submitting payment.\n\nTempo validates the challenge and credential, confirms the chain is supported, and screens the payment parties. It does not settle, broadcast, reserve funds, or consume the credential.\n\nRequires `mpp:write`. Well-formed requests return HTTP `200`; inspect `success`. Invalid bodies return `400`; missing or unauthorized API keys return `401` or `403`.","responses":{"200":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"success":{"type":"boolean","const":true,"description":"Whether the credential passed relay checks.","examples":[true]}},"required":["success"]},{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"anyOf":[{"type":"string","const":"unsupported","description":"Method, intent, network, or asset is unsupported.","examples":["unsupported"]},{"type":"string","const":"policy_denied","description":"Payment violates relay or account policy.","examples":["policy_denied"]},{"type":"string","const":"invalid_payment","description":"Payload, signature, parties, or payment requirements are invalid.","examples":["invalid_payment"]},{"type":"string","const":"insufficient_funds","description":"Sender lacks funds.","examples":["insufficient_funds"]},{"type":"string","const":"expired","description":"Challenge or payment authorization expired.","examples":["expired"]},{"type":"string","const":"already_used","description":"Credential or transaction already used.","examples":["already_used"]},{"type":"string","const":"screen_rejected","description":"Originator or recipient failed screening.","examples":["screen_rejected"]},{"type":"string","const":"simulation_failed","description":"Transaction simulation failed before broadcast.","examples":["simulation_failed"]},{"type":"string","const":"broadcast_failed","description":"Transaction broadcast or confirmation failed.","examples":["broadcast_failed"]},{"type":"string","const":"temporarily_unavailable","description":"Retry may succeed.","examples":["temporarily_unavailable"]},{"type":"string","const":"unknown","description":"Unexpected relay failure.","examples":["unknown"]}],"description":"A stable machine-readable reason the MPP relay rejected or could not process a payment."},"message":{"description":"A human-readable explanation of the relay result.","examples":["MPP relay is not enabled yet."],"type":"string"}},"required":["code"],"examples":[{"code":"invalid_payment","message":"Credential signature is invalid."}],"description":"The reason the credential did not pass relay checks."},"success":{"type":"boolean","const":false,"description":"Whether the credential passed relay checks.","examples":[false]}},"required":["error","success"]}],"description":"The result of read-only MPP credential validation."}}},"description":"The MPP credential validation result.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"},"example":{"error":{"code":"query_invalid","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"The API key does not grant MPP relay access."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The API key does not grant MPP relay access."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Validate MPP credential","tags":["MPP"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["mpp:write"]}},"/v1/mpp/broadcast":{"post":{"operationId":"broadcastMppCredential","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"challenge":{"type":"object","properties":{"description":{"description":"A human-readable description of the payment.","examples":["Tempo API payment"],"type":"string"},"expires":{"description":"When the payment challenge expires, as an ISO-8601 timestamp.","examples":["2026-07-21T21:30:00.000Z"],"type":"string"},"id":{"type":"string","description":"The payment challenge identifier.","examples":["ch_01j3j1k2l3m4n5p6q7r8s9t0u"]},"intent":{"type":"string","description":"The MPP payment intent.","examples":["charge"]},"method":{"type":"string","description":"The MPP payment method.","examples":["tempo"]},"opaque":{"description":"Opaque data bound to the challenge by its issuer.","examples":["eyJhbGciOiJIUzI1NiJ9"],"type":"string"},"realm":{"type":"string","description":"The MPP realm that issued the challenge.","examples":["merchant.example"]},"request":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"The payment request bound to the challenge.","examples":[{"amount":"1","currency":"USD"}]}},"required":["id","intent","method","realm","request"],"additionalProperties":{},"description":"An MPP payment challenge."},"payload":{"description":"The method-specific MPP credential payload.","examples":[{"signature":"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa","type":"transaction"}]},"source":{"description":"An optional payer identifier supplied with the credential.","examples":["did:pkh:eip155:4217:0x1234567890abcdef1234567890abcdef12345678"],"type":"string"}},"required":["challenge","payload"],"description":"An MPP payment credential and its challenge."}}}},"description":"Validates, screens, and submits a completed MPP credential to Tempo.\n\nRequires `mpp:write`. Well-formed requests return HTTP `200`; inspect `success`.\n\nUse `Idempotency-Key` on retries to replay a successful receipt. Reusing a key for a different credential returns `invalid_payment`, and in-flight duplicates return `temporarily_unavailable`.","parameters":[{"description":"Optional opaque retry key, scoped to the API key and credential. Reusing it after a successful broadcast returns the original receipt without another submission. Reusing it with a different credential returns `invalid_payment`. While the first request is running, duplicates return `temporarily_unavailable`. Failed attempts are not retained and may be retried with the same key.","in":"header","name":"Idempotency-Key","required":false,"schema":{"example":"mpp_broadcast_01j3j1k2l3m4n5p6q7r8s9t0u","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"receipt":{"type":"object","properties":{"externalId":{"description":"An optional caller-provided payment reference.","examples":["pi_01j3j1k2l3m4n5p6q7r8s9t0u"],"type":"string"},"method":{"type":"string","description":"The payment method that settled the credential.","examples":["tempo"]},"reference":{"type":"string","description":"The on-chain or payment-system reference for the settlement.","examples":["0x2222222222222222222222222222222222222222222222222222222222222222"]},"timestamp":{"type":"string","description":"When the payment settled, as an ISO-8601 timestamp.","examples":["2026-07-20T18:30:00.000Z"]}},"required":["method","reference","timestamp"],"description":"The payment settlement receipt.","examples":[{"method":"tempo","reference":"0x2222222222222222222222222222222222222222222222222222222222222222","timestamp":"2026-07-20T18:30:00.000Z"}]},"success":{"type":"boolean","const":true,"description":"Whether the relay broadcast the credential.","examples":[true]}},"required":["receipt","success"]},{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"anyOf":[{"type":"string","const":"unsupported","description":"Method, intent, network, or asset is unsupported.","examples":["unsupported"]},{"type":"string","const":"policy_denied","description":"Payment violates relay or account policy.","examples":["policy_denied"]},{"type":"string","const":"invalid_payment","description":"Payload, signature, parties, or payment requirements are invalid.","examples":["invalid_payment"]},{"type":"string","const":"insufficient_funds","description":"Sender lacks funds.","examples":["insufficient_funds"]},{"type":"string","const":"expired","description":"Challenge or payment authorization expired.","examples":["expired"]},{"type":"string","const":"already_used","description":"Credential or transaction already used.","examples":["already_used"]},{"type":"string","const":"screen_rejected","description":"Originator or recipient failed screening.","examples":["screen_rejected"]},{"type":"string","const":"simulation_failed","description":"Transaction simulation failed before broadcast.","examples":["simulation_failed"]},{"type":"string","const":"broadcast_failed","description":"Transaction broadcast or confirmation failed.","examples":["broadcast_failed"]},{"type":"string","const":"temporarily_unavailable","description":"Retry may succeed.","examples":["temporarily_unavailable"]},{"type":"string","const":"unknown","description":"Unexpected relay failure.","examples":["unknown"]}],"description":"A stable machine-readable reason the MPP relay rejected or could not process a payment."},"message":{"description":"A human-readable explanation of the relay result.","examples":["MPP relay is not enabled yet."],"type":"string"}},"required":["code"],"examples":[{"code":"broadcast_failed","message":"Transaction broadcast failed."}],"description":"The reason the relay did not broadcast the credential."},"success":{"type":"boolean","const":false,"description":"Whether the relay broadcast the credential.","examples":[false]}},"required":["error","success"]}],"description":"The result of broadcasting an MPP credential."}}},"description":"The MPP credential broadcast result.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"},"example":{"error":{"code":"query_invalid","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"The API key does not grant MPP relay access."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The API key does not grant MPP relay access."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Broadcast MPP credential","tags":["MPP"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]}],"x-required-scopes":["mpp:write"]}},"/v1/auth/siwe/logout":{"post":{"operationId":"siweLogout","hide":false,"responses":{"204":{"description":"Session revoked and cookie cleared."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"}},"description":"Revokes the current session and clears the session cookie.","summary":"Sign out","tags":["Authentication"],"security":[{"session":[]},{"bearerAuth":[]},{}]}},"/v1/exchange/quotes/execute":{"post":{"operationId":"finalizeExchangeQuote","parameters":[{"in":"query","name":"chainId","schema":{"anyOf":[{"type":"string","enum":["mainnet","testnet"]},{"type":"number"}],"examples":[4217]},"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id. Defaults to `mainnet` when omitted."},{"in":"query","name":"include","schema":{"type":"array","items":{"type":"string","enum":["token.logoUri","token.verified"]},"examples":[["token.logoUri","token.verified"]]},"description":"Comma-separated token fields to include, such as `token.logoUri,token.verified`."},{"in":"query","name":"valuation.currency","schema":{"type":"string","pattern":"^[a-zA-Z]{3}$","examples":["AUD"]},"description":"Currency to denominate values in (case-insensitive, e.g. `AUD`). Must be priced by the configured FX oracle."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizeExchangeQuoteRequest"}}}},"description":"Finishes a provider quote after the wallet supplies the requested typed-data signature. This endpoint does not submit a transaction.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizedExchangeQuote"}}},"description":"The final unsigned calls needed to execute the swap.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrChainIdInvalidOrChainIdUnsupportedOrQueryInvalidOrSwapContinuationInvalidOrSwapProviderInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Invalid request."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Invalid request."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"402":{"$ref":"#/components/responses/PaymentRequired"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"The selected provider could not build the swap right now."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The selected provider could not build the swap right now."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Finalize quote","tags":["Exchange"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{}],"x-required-scopes":["data:read"]}},"/v1/orgs/{orgId}/faucet":{"post":{"operationId":"fundTestnetAccount","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundTestnetAccountRequest"}}}},"description":"Funds an account with the test tokens configured on Tempo testnet. This operation is available to signed-in organization members and is rate limited.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FundTestnetAccountResponse"}}},"description":"The account was funded.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"The path or account address is invalid."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The path or account address is invalid."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization was found."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitExceededError"},"example":{"error":{"code":"rate_limit_exceeded","message":"The user or account faucet limit was exceeded."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The user or account faucet limit was exceeded.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}}},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Fund testnet account","tags":["Faucet"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/invitations/{invitationId}/accept":{"post":{"operationId":"acceptInvitation","parameters":[{"in":"path","name":"invitationId","schema":{"type":"string","examples":["inv_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The invitation id (`inv_…`)."}],"description":"Accept an invitation addressed to the session's verified email, joining the organization with the invited role.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptInvitationResponse"}}},"description":"The membership granted by accepting.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationNotFoundError"},"example":{"error":{"code":"invitation_not_found","message":"No accessible pending invitation was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible pending invitation was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Accept invitation","tags":["Invitations"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/invitations/{invitationId}/decline":{"post":{"operationId":"declineInvitation","parameters":[{"in":"path","name":"invitationId","schema":{"type":"string","examples":["inv_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The invitation id (`inv_…`)."}],"description":"Decline an invitation addressed to the session's verified email. Declining settles the invitation; it can no longer be accepted.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeclineInvitationResponse"}}},"description":"Confirmation that the invitation was declined.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationNotFoundError"},"example":{"error":{"code":"invitation_not_found","message":"No accessible pending invitation was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible pending invitation was found for this id."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Decline invitation","tags":["Invitations"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/orgs/{orgId}/api-keys/{keyId}":{"delete":{"operationId":"revokeOrgApiKey","parameters":[{"in":"path","name":"keyId","schema":{"type":"string","examples":["key_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The key id (`key_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."}],"description":"Revoke an organization-level API key. Requests presenting its token stop resolving.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeApiKeyResponse"}}},"description":"Confirmation that the key was revoked.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyNotFoundOrApiKeysNotEnabledOrOrganizationNotFoundError"},"example":{"error":{"code":"api_key_not_found","message":"No accessible API key or API key surface was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible API key or API key surface was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Revoke organization API key","tags":["API Keys"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]}},"/v1/orgs/{orgId}/invitations/{invitationId}":{"delete":{"operationId":"revokeInvitation","parameters":[{"in":"path","name":"invitationId","schema":{"type":"string","examples":["inv_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The invitation id (`inv_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeInvitationResponse"}}},"description":"Confirmation that the invitation was revoked.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitationNotFoundOrOrganizationNotFoundError"},"example":{"error":{"code":"invitation_not_found","message":"No accessible organization or pending invitation was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization or pending invitation was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Revoke invitation","tags":["Invitations"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]}},"/v1/orgs/{orgId}/invite-links/{inviteLinkId}":{"patch":{"operationId":"updateInviteLink","parameters":[{"in":"path","name":"inviteLinkId","schema":{"type":"string","examples":["iln_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Invite-link resource id (`iln_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateInviteLinkRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLink"}}},"description":"Updated link.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLinkNotFoundOrOrganizationNotFoundError"},"example":{"error":{"code":"invite_link_not_found","message":"No accessible organization or invite link was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization or invite link was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Update invite link","tags":["Invite Links"],"security":[{"session":[]},{"bearerAuth":[]}]},"delete":{"operationId":"deleteInviteLink","parameters":[{"in":"path","name":"inviteLinkId","schema":{"type":"string","examples":["iln_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Invite-link resource id (`iln_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteInviteLinkResponse"}}},"description":"Deleted link.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteLinkNotFoundOrOrganizationNotFoundError"},"example":{"error":{"code":"invite_link_not_found","message":"No accessible organization or invite link was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization or invite link was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Delete invite link","tags":["Invite Links"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/orgs/{orgId}/members/{userId}":{"patch":{"operationId":"updateMember","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"path","name":"userId","schema":{"type":"string","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The member user id (`usr_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMemberRequest"}}}},"description":"Change a member's role. The last owner cannot be demoted.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Member"}}},"description":"The updated member.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberNotFoundOrOrganizationNotFoundError"},"example":{"error":{"code":"member_not_found","message":"No accessible organization or member was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization or member was found for this id."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LastOwnerError"},"example":{"error":{"code":"last_owner","message":"The organization would be left without an owner."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The organization would be left without an owner."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Update member","tags":["Members"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]},"delete":{"operationId":"removeMember","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"path","name":"userId","schema":{"type":"string","examples":["usr_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The member user id (`usr_…`)."}],"description":"Remove a member. Owners and management-write keys remove anyone; members remove themselves. The last owner stays.","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveMemberResponse"}}},"description":"Confirmation that the member was removed.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberNotFoundOrOrganizationNotFoundError"},"example":{"error":{"code":"member_not_found","message":"No accessible organization or member was found for this id."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization or member was found for this id."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LastOwnerError"},"example":{"error":{"code":"last_owner","message":"The organization would be left without an owner."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The organization would be left without an owner."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Remove member","tags":["Members"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]}},"/v1/orgs/{orgId}/verified-token-requests/{requestId}":{"delete":{"operationId":"cancelVerifiedTokenRequest","parameters":[{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Organization id (`org_…`)."},{"in":"path","name":"requestId","schema":{"type":"string","examples":["vtr_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"Request resource id (`vtr_…`)."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelVerifiedTokenRequestResponse"}}},"description":"Canceled request.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationNotFoundOrVerifiedTokenRequestNotFoundError"},"example":{"error":{"code":"organization_not_found","message":"No accessible organization or verification request was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization or verification request was found."},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestNotPendingError"},"example":{"error":{"code":"request_not_pending","message":"Only pending requests can be canceled."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Only pending requests can be canceled."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Cancel token request","tags":["Verified Token Requests"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/orgs/{orgId}/api-keys/{keyId}/rotate":{"post":{"operationId":"rotateOrgApiKey","parameters":[{"in":"path","name":"keyId","schema":{"type":"string","examples":["key_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The key id (`key_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."}],"description":"Create a replacement organization-level API key with the same access as an existing key. The existing key remains active until revoked.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateApiKeyResponse"}}},"description":"The replacement key, including its one-time token.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyForbiddenOrApiKeyIpForbiddenOrForbiddenOrScopeNotIssuableError"},"example":{"error":{"code":"api_key_forbidden","message":"The source key contains scopes the caller cannot rotate."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The source key contains scopes the caller cannot rotate."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyNotFoundOrApiKeysNotEnabledOrOrganizationNotFoundError"},"example":{"error":{"code":"api_key_not_found","message":"No accessible API key or API key surface was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible API key or API key surface was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Rotate organization API key","tags":["API Keys"],"security":[{"session":[]},{"bearerAuth":[]}]}},"/v1/orgs/{orgId}/billing/payment-methods/{methodId}":{"delete":{"operationId":"deleteBillingPaymentMethod","parameters":[{"in":"path","name":"methodId","schema":{"type":"string","examples":["pm_1NVChw2eZvKYlo2CHxiM5E2N"]},"required":true,"description":"The payment method id (`pm_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"query","name":"environment","schema":{"default":"production","examples":["sandbox"],"type":"string","enum":["production","sandbox"]},"description":"Resource environment."}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Billing"}}},"description":"The organization's updated billing state.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidOrQueryInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid query."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid query."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingNotFoundOrOrganizationNotFoundOrPaymentMethodNotFoundError"},"example":{"error":{"code":"billing_not_found","message":"No accessible organization, billing account, or payment method was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible organization, billing account, or payment method was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"501":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotImplementedError"},"example":{"error":{"code":"billing_unconfigured","message":"Billing is not configured on this deployment."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Billing is not configured on this deployment."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Remove payment method","tags":["Billing"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]}},"/v1/orgs/{orgId}/projects/{projectId}/api-keys/{keyId}":{"patch":{"operationId":"updateApiKey","parameters":[{"in":"path","name":"keyId","schema":{"type":"string","examples":["key_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The key id (`key_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"path","name":"projectId","schema":{"type":"string","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The project id (`prj_…`)."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateApiKeyRequest"}}}},"description":"Replace an API key's client IP/CIDR allowlist. An empty list removes the restriction.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKey"}}},"description":"The updated API key metadata.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrBodyInvalidOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key, invalid path, or invalid body."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key, invalid path, or invalid body."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyNotFoundOrApiKeysNotEnabledOrOrganizationNotFoundOrProjectNotFoundError"},"example":{"error":{"code":"api_key_not_found","message":"No accessible API key or API key surface was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible API key or API key surface was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Update API key","tags":["API Keys"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]},"delete":{"operationId":"revokeApiKey","parameters":[{"in":"path","name":"keyId","schema":{"type":"string","examples":["key_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The key id (`key_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"path","name":"projectId","schema":{"type":"string","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The project id (`prj_…`)."}],"description":"Revoke an API key. Requests presenting its token stop resolving.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeApiKeyResponse"}}},"description":"Confirmation that the key was revoked.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForbiddenError"},"example":{"error":{"code":"api_key_forbidden","message":"Forbidden."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Forbidden."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyNotFoundOrApiKeysNotEnabledOrOrganizationNotFoundOrProjectNotFoundError"},"example":{"error":{"code":"api_key_not_found","message":"No accessible API key or API key surface was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible API key or API key surface was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Revoke API key","tags":["API Keys"],"security":[{"apiKey":[]},{"queryApiKey":[]},{"bearerAuth":[]},{"session":[]}],"x-required-scopes":["management:write"]}},"/v1/orgs/{orgId}/projects/{projectId}/api-keys/{keyId}/rotate":{"post":{"operationId":"rotateApiKey","parameters":[{"in":"path","name":"keyId","schema":{"type":"string","examples":["key_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The key id (`key_…`)."},{"in":"path","name":"orgId","schema":{"type":"string","examples":["org_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The organization id (`org_…`)."},{"in":"path","name":"projectId","schema":{"type":"string","examples":["prj_1a2b3c4d5e6f7g8h9j0k1m2n"]},"required":true,"description":"The project id (`prj_…`)."}],"description":"Create a replacement API key with the same access as an existing key. The existing key remains active until revoked.","hide":false,"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateApiKeyResponse"}}},"description":"The replacement key, including its one-time token.","headers":{"RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"},"RateLimit-Scope":{"$ref":"#/components/headers/RateLimitScope"},"tempo-request-id":{"$ref":"#/components/headers/TempoRequestId"}}},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyMalformedOrParamInvalidError"},"example":{"error":{"code":"api_key_malformed","message":"Malformed API key or invalid path."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Malformed API key or invalid path."},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthenticationError"},"example":{"error":{"code":"api_key_missing","message":"Missing or invalid API key."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Missing or invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyForbiddenOrApiKeyIpForbiddenOrForbiddenOrScopeNotIssuableError"},"example":{"error":{"code":"api_key_forbidden","message":"The source key contains scopes the caller cannot rotate."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"The source key contains scopes the caller cannot rotate."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyNotFoundOrApiKeysNotEnabledOrOrganizationNotFoundOrProjectNotFoundError"},"example":{"error":{"code":"api_key_not_found","message":"No accessible API key or API key surface was found."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"No accessible API key or API key surface was found."},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpstreamError"},"example":{"error":{"code":"upstream_error","message":"Upstream data failure."},"requestId":"0a1b2c3d-4e5f-6071-8293-a4b5c6d7e8f9"}}},"description":"Upstream data failure."},"504":{"$ref":"#/components/responses/RequestTimeout"}},"summary":"Rotate API key","tags":["API Keys"],"security":[{"session":[]},{"bearerAuth":[]}]}}},"webhooks":{"event":{"post":{"description":"When an event you subscribed to happens, Tempo sends this signed message to your webhook URL as an HTTP POST (the same shape is used by `POST /webhooks/:id/ping` so you can test your endpoint). Always verify the `tempo-signature` header before trusting the body, then reply with any 2xx status to confirm you received it. If your endpoint returns a non-2xx status, times out, or redirects, Tempo retries with increasing delays; an endpoint that keeps failing is eventually disabled.","parameters":[{"description":"Signature proving the message really came from Tempo. An HMAC-SHA256 of the body using your webhook secret, formatted `t=<unix>,v1=<hex>`. Verify this before trusting the payload.","in":"header","name":"tempo-signature","required":true,"schema":{"type":"string"}},{"description":"A unique, stable id for this event (`evt_…`). The same event may be delivered more than once, so use this id to skip duplicates.","in":"header","name":"tempo-event-id","required":true,"schema":{"type":"string"}},{"description":"What happened: `token:transfer`, `transaction:included`, `log:emitted`, `block:created`, `funding:deposit.updated`, `funding:transfer.updated`, or `ping`.","in":"header","name":"tempo-event-type","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","examples":[4217],"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"context":{"examples":[{"title":"Prod USDC large transfers"}],"type":"object","properties":{"description":{"type":"string","maxLength":500,"description":"Longer description of what this subscription is for.","examples":["Notify #ops when a large USDC transfer settles on mainnet."]},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","maxLength":500},"description":"Arbitrary key/value labels echoed on every delivered event and rendered by destinations (Slack fields, Better Stack log fields). Keys are 1–64 chars, values ≤500 chars, ≤20 entries.","examples":[{"env":"prod","team":"payments"}]},"title":{"type":"string","maxLength":120,"description":"Short label for this subscription.","examples":["Prod USDC large transfers"]}},"additionalProperties":false,"description":"Human context describing what this webhook subscription is for.","ref":"WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"type":"object","properties":{"address":{"description":"TIP-20 token contract address.","examples":["0x20c0000000000000000000008f5425160ebe5525"]},"amount":{"type":"string","description":"Amount transferred, as a decimal integer string in the token base unit.","examples":["10000"]},"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block number where this transfer was included.","examples":[1000002]},"recipient":{"description":"Address that received the transfer.","examples":["0x9e39034aae71fb89f66061a2602eb6efec271754"]},"sender":{"description":"Address that sent the transfer.","examples":["0xe7687128b0a808c2831ff94d4f7b2fb35c65af38"]},"timestamp":{"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":"Block timestamp as an ISO 8601 string.","examples":["2026-01-14T18:38:03.685Z"]},"token":{"type":"object","properties":{"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of decimals the token uses.","examples":[6]},"symbol":{"type":"string","description":"Token symbol (e.g. `USDC`).","examples":["USDC"]}},"required":["decimals","symbol"],"additionalProperties":false,"description":"Best-effort token metadata (symbol/decimals) resolved before delivery so `amount` can render as a human amount. Omitted when the lookup is unavailable."},"transactionHash":{"description":"Transaction hash that contains this transfer.","examples":["0x3d24a706cc2f6f4c96620bef1f61ddb23040ff77c22c8db42918c7c424bbf9d3"]}},"required":["address","amount","blockNumber","recipient","sender","timestamp","transactionHash"],"additionalProperties":false,"description":"Payload for a `token:transfer` event, decoded from a TIP-20 `Transfer` log.","ref":"WebhookTransferEvent"},"type":{"type":"string","const":"token:transfer","examples":["token:transfer"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"additionalProperties":false,"title":"Transfer event"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","examples":[4217],"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"context":{"examples":[{"title":"Prod USDC large transfers"}],"type":"object","properties":{"description":{"type":"string","maxLength":500,"description":"Longer description of what this subscription is for.","examples":["Notify #ops when a large USDC transfer settles on mainnet."]},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","maxLength":500},"description":"Arbitrary key/value labels echoed on every delivered event and rendered by destinations (Slack fields, Better Stack log fields). Keys are 1–64 chars, values ≤500 chars, ≤20 entries.","examples":[{"env":"prod","team":"payments"}]},"title":{"type":"string","maxLength":120,"description":"Short label for this subscription.","examples":["Prod USDC large transfers"]}},"additionalProperties":false,"description":"Human context describing what this webhook subscription is for.","ref":"WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"type":"object","properties":{"blockHash":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash."},{"type":"null"}],"description":"The block hash once included, or `null` while the transaction is pending."},"blockNumber":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"The block number once included, or `null` while the transaction is pending.","examples":[23456789]},"calls":{"description":"Decoded calls for Tempo account-abstraction transactions.","examples":[[{"data":"0xdeadbeef","to":null}]],"type":"array","items":{"type":"object","properties":{"data":{"description":"Call data sent to the contract, as `0x`-prefixed bytes.","examples":["0xdeadbeef"]},"to":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase."},{"type":"null"}],"description":"The address this call targets, or `null` when it creates a contract."}},"required":["to"],"additionalProperties":false,"description":"One decoded call inside a Tempo account-abstraction transaction.","ref":"TransactionCall"}},"chainId":{"description":"The chain ID that this transaction belongs to.","examples":[4217],"type":"integer","minimum":0,"maximum":9007199254740991},"feeToken":{"description":"The token requested for transaction fees, with RPC metadata and optional curated fields.","type":"object","properties":{"address":{"description":"The TIP-20 token contract address on Tempo."},"currency":{"type":"string","description":"The currency label for this token, such as `USD` for USD-denominated stablecoins.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The number of decimal places the token uses; Tempo stablecoins typically use 6.","examples":[6]},"logoUri":{"description":"A URL for the token’s logo image, when one is available.","examples":["https://api.tempo.xyz/assets/4217/icons/0x20c000000000000000000000b9537d11c60e8b50?__response=svg-sandbox-v1"],"type":"string"},"name":{"type":"string","description":"The token’s human-readable name.","examples":["Bridged USDC (Stargate)"]},"symbol":{"type":"string","description":"The short ticker symbol wallets and apps show for this token.","examples":["USDC.e"]},"verified":{"type":"boolean","description":"Whether this token is in Tempo’s curated verified token list.","examples":[true]}},"required":["address","currency","decimals","name","symbol"],"additionalProperties":false,"ref":"RpcTokenReference"},"gas":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Maximum gas the transaction is allowed to use.","examples":[21000]},"gasPrice":{"description":"Gas price for legacy-style transactions, expressed as a decimal string when humanized.","type":"string","pattern":"^\\d+$","examples":["1000000"]},"hash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies this transaction."},"id":{"description":"Stable resource ID for this API response; it is the transaction hash."},"input":{"description":"Call data for non-Tempo transaction formats, as `0x`-prefixed bytes.","examples":["0xdeadbeef"]},"maxFeePerGas":{"description":"Maximum total fee per gas the sender is willing to pay.","type":"string","pattern":"^\\d+$","examples":["1000000"]},"maxPriorityFeePerGas":{"description":"Maximum priority fee per gas for EIP-1559-style transactions.","type":"string","pattern":"^\\d+$","examples":["1000000"]},"meta":{"type":"object","properties":{"rpc":{"type":"object","properties":{"aaAuthorizationList":{"description":"Tempo account-abstraction authorizations attached to the transaction.","type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}},"accessList":{"description":"EIP-2930 access list that predeclares accounts and storage slots for the transaction.","type":"array","items":{"type":"object","properties":{"address":{"description":"The account whose storage slots are listed in this access-list entry."},"storageKeys":{"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash."},"description":"The storage slot keys the transaction plans to access."}},"required":["address","storageKeys"],"additionalProperties":{},"description":"One EIP-2930 access-list entry that predeclares an account and storage slots.","ref":"RpcTransactionAccessListItem"}},"authorizationList":{"description":"EIP-7702 authorizations attached to the transaction.","type":"array","items":{"type":"object","properties":{},"additionalProperties":{}}},"blobVersionedHashes":{"description":"Versioned blob hashes for EIP-4844 blob data.","type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash."}},"blockHash":{"anyOf":[{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash."},{"type":"null"}],"description":"The block hash once included, or `null` while the transaction is pending."},"blockNumber":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}],"description":"The block number once included, or `null` while the transaction is pending."},"blockTimestamp":{"description":"The block timestamp for the block that included this transaction.","anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]},"calls":{"description":"Decoded calls for Tempo account-abstraction transactions.","examples":[[{"data":"0xdeadbeef","input":"0xdeadbeef","to":null,"value":"0x0"}]],"anyOf":[{"type":"array","items":{"type":"object","properties":{"data":{"description":"Call data for this call; this is the same bytes as `input` when both are present.","examples":["0xdeadbeef"],"anyOf":[{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","examples":["0xdeadbeef"]},{"type":"null"}]},"input":{"description":"Call data sent to the contract, as `0x`-prefixed bytes.","examples":["0xdeadbeef"],"anyOf":[{"description":"Raw binary data as a `0x`-prefixed lowercase hex string (may be empty, just `0x`).","examples":["0xdeadbeef"]},{"type":"null"}]},"to":{"description":"The address this call targets, or `null` when the call creates a contract.","anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase."},{"type":"null"}]},"value":{"description":"Native value sent with this call, as a hex quantity.","anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]}},"additionalProperties":{},"description":"One operation inside a Tempo account-abstraction transaction.","ref":"RpcTransactionCall"},"examples":[[{"data":"0xdeadbeef","input":"0xdeadbeef","to":null,"value":"0x0"}]]},{"type":"null","examples":[null]}]},"chainId":{"description":"The chain ID that the transaction is valid on; legacy transactions may omit it.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"feePayer":{"description":"The address that paid the transaction fee.","examples":["0xbe058e1c4df8a4366a387bf595b284246a93039e"]},"feePayerSignature":{"description":"A signature envelope exactly as returned by JSON-RPC.","examples":[{"type":"secp256k1"}],"anyOf":[{"type":"object","properties":{"type":{"description":"The signature scheme used by this envelope, such as `secp256k1`, `p256`, or `keychain` when the RPC includes it.","examples":["secp256k1"],"type":"string"}},"additionalProperties":{},"description":"The signature envelope exactly as returned by JSON-RPC.","ref":"RpcTransactionSignatureEnvelope"},{"type":"null"}]},"feeToken":{"description":"The fee token requested by the transaction; Tempo fees are paid in USD stablecoins such as `pathUSD`.","anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase."},{"type":"null"}]},"from":{"description":"The address that submitted or authorized the transaction."},"gas":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Maximum gas the transaction is allowed to use.","examples":["0x1a"]},"gasPrice":{"description":"Gas price for legacy-style transactions, expressed as a decimal string when humanized.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"hash":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase, that identifies this transaction."},"input":{"description":"Call data for non-Tempo transaction formats, as `0x`-prefixed bytes.","examples":["0xdeadbeef"]},"keyAuthorization":{"description":"Key authorization data attached to this Tempo transaction.","examples":[{}],"anyOf":[{"type":"object","properties":{},"additionalProperties":{}},{"type":"null"}]},"maxFeePerBlobGas":{"description":"Maximum fee per blob gas for EIP-4844 blob data.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"maxFeePerGas":{"description":"Maximum total fee per gas the sender is willing to pay.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"maxPriorityFeePerGas":{"description":"Maximum priority fee per gas for EIP-1559-style transactions.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"nonce":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"Nonce from the sender account that orders and de-duplicates transactions.","examples":["0x1a"]},"nonceKey":{"description":"Tempo two-dimensional nonce key used to group nonce sequences.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"r":{"description":"The `r` value from the transaction ECDSA signature.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"s":{"description":"The `s` value from the transaction ECDSA signature.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"signature":{"description":"A signature envelope exactly as returned by JSON-RPC.","type":"object","properties":{"type":{"description":"The signature scheme used by this envelope, such as `secp256k1`, `p256`, or `keychain` when the RPC includes it.","examples":["secp256k1"],"type":"string"}},"additionalProperties":{},"ref":"RpcTransactionSignatureEnvelope"},"to":{"description":"The recipient address, or `null` when the transaction creates a contract.","anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase."},{"type":"null"}]},"transactionIndex":{"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}],"description":"The transaction position within its block, or `null` while pending."},"type":{"description":"Raw transaction type byte, such as `0x2` for EIP-1559 or `0x76` for Tempo.","examples":["0x2"]},"v":{"description":"The `v` recovery value from the transaction ECDSA signature.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"validAfter":{"description":"Earliest Unix timestamp when this Tempo transaction may be included.","examples":["0x0"],"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]},"validBefore":{"description":"Latest Unix timestamp when this Tempo transaction may be included.","examples":["0xffffffff"],"anyOf":[{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"A whole number encoded as a `0x`-prefixed hexadecimal string (e.g. `0x1a` is 26).","examples":["0x1a"]},{"type":"null"}]},"value":{"description":"Native value sent by non-Tempo transaction formats.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]},"yParity":{"description":"The y-parity value from the transaction signature.","type":"string","pattern":"^0x[0-9a-fA-F]+$","examples":["0x1a"]}},"required":["blockHash","blockNumber","from","gas","hash","nonce","transactionIndex","type"],"additionalProperties":{},"description":"The original JSON-RPC transaction payload."}},"required":["rpc"],"additionalProperties":false,"description":"Metadata for this transaction webhook event."},"nonce":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Nonce from the sender account that orders and de-duplicates transactions.","examples":[0]},"nonceKey":{"description":"Tempo two-dimensional nonce key used by Tempo transactions.","examples":["0x0"]},"recipient":{"anyOf":[{"description":"An account address — the `0x`-prefixed 20-byte identifier for a wallet or contract, returned in lowercase."},{"type":"null"}],"description":"The recipient address, or `null` when the transaction creates a contract."},"sender":{"description":"The address that submitted or authorized the transaction."},"timestamp":{"anyOf":[{"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))$"},{"type":"null"}],"description":"The block timestamp as ISO 8601, or `null` while the transaction is pending.","examples":["2024-01-01T00:00:00Z"]},"transactionIndex":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"The transaction position within its block, or `null` while pending.","examples":[0]},"type":{"type":"string","enum":["legacy","eip2930","eip1559","eip4844","eip7702","tempo","unknown"],"description":"Human-readable transaction type decoded from the raw JSON-RPC `type` byte.","examples":["eip1559"],"ref":"TransactionType"},"validAfter":{"description":"Earliest ISO 8601 time when this Tempo transaction may be included.","examples":["2024-01-01T00:00:00Z"],"anyOf":[{"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))$"},{"type":"null"}]},"validBefore":{"description":"Latest ISO 8601 time when this Tempo transaction may be included.","examples":["2024-01-01T00:00:00Z"],"anyOf":[{"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))$"},{"type":"null"}]},"value":{"type":"string","pattern":"^\\d+$","description":"Native value transferred by this transaction, as a decimal string.","examples":["1000000"]}},"required":["blockHash","blockNumber","gas","hash","id","meta","nonce","recipient","sender","timestamp","transactionIndex","type","value"],"additionalProperties":false,"description":"A transaction included in a block.","ref":"WebhookTransactionEvent"},"type":{"type":"string","const":"transaction:included","examples":["transaction:included"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"additionalProperties":false,"title":"Included transaction event"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","examples":[4217],"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"context":{"examples":[{"title":"Prod USDC large transfers"}],"type":"object","properties":{"description":{"type":"string","maxLength":500,"description":"Longer description of what this subscription is for.","examples":["Notify #ops when a large USDC transfer settles on mainnet."]},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","maxLength":500},"description":"Arbitrary key/value labels echoed on every delivered event and rendered by destinations (Slack fields, Better Stack log fields). Keys are 1–64 chars, values ≤500 chars, ≤20 entries.","examples":[{"env":"prod","team":"payments"}]},"title":{"type":"string","maxLength":120,"description":"Short label for this subscription.","examples":["Prod USDC large transfers"]}},"additionalProperties":false,"description":"Human context describing what this webhook subscription is for.","ref":"WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"type":"object","properties":{"address":{"description":"Contract that emitted the log.","examples":["0x20c00000000000000000000071de0cd31ab0d105"]},"args":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Decoded event arguments, present only when a `signature` filter was supplied and decoding succeeded.","examples":[{"from":"0xe768…","to":"0x9e39…","value":"10000"}]},"blockNumber":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block number the log was included in.","examples":[1000002]},"data":{"description":"Unindexed log data (ABI-encoded).","examples":["0x0000000000000000000000000000000000000000000000000000000000002710"]},"event":{"type":"object","properties":{"name":{"type":"string","description":"Decoded event name.","examples":["Transfer"]},"signature":{"type":"string","description":"Human-readable event signature used to decode the log.","examples":["event Transfer(address indexed from, address indexed to, uint256 value)"]},"topic0":{"description":"Event signature hash (topic 0).","examples":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]}},"required":["name","signature","topic0"],"additionalProperties":false,"description":"Decoded event identity, present only when a `signature` filter was supplied."},"logIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Index of the log within its block.","examples":[0]},"timestamp":{"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 block was produced, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.685Z"]},"topics":{"type":"array","items":{"description":"A 32-byte hash, `0x`-prefixed and returned in lowercase — for example a transaction or block hash."},"description":"Log topics, starting with the event signature hash (topic 0).","examples":[["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x000000000000000000000000e7687128b0a808c2831ff94d4f7b2fb35c65af38"]]},"transactionHash":{"description":"Hash of the transaction that emitted the log.","examples":["0x3d24a706cc2f6f4c96620bef1f61ddb23040ff77c22c8db42918c7c424bbf9d3"]},"transactionIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Index of the transaction within its block.","examples":[0]}},"required":["address","blockNumber","data","logIndex","timestamp","topics","transactionHash","transactionIndex"],"additionalProperties":false,"description":"Payload for a `log:emitted` event (a raw contract event log).","ref":"WebhookLogEvent"},"type":{"type":"string","const":"log:emitted","examples":["log:emitted"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"additionalProperties":false,"title":"Log event"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","examples":[4217],"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"context":{"examples":[{"title":"Prod USDC large transfers"}],"type":"object","properties":{"description":{"type":"string","maxLength":500,"description":"Longer description of what this subscription is for.","examples":["Notify #ops when a large USDC transfer settles on mainnet."]},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","maxLength":500},"description":"Arbitrary key/value labels echoed on every delivered event and rendered by destinations (Slack fields, Better Stack log fields). Keys are 1–64 chars, values ≤500 chars, ≤20 entries.","examples":[{"env":"prod","team":"payments"}]},"title":{"type":"string","maxLength":120,"description":"Short label for this subscription.","examples":["Prod USDC large transfers"]}},"additionalProperties":false,"description":"Human context describing what this webhook subscription is for.","ref":"WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"type":"object","properties":{"number":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Block height, starting from genesis block 0.","examples":[1000002]},"hash":{"description":"Hash that identifies this block.","examples":["0x3fe7d9e595f3d8215ec840c6ef55ac0bead58933e96fc2ead0f2aaf79715f45d"]},"parentHash":{"description":"Hash of the previous block in the chain.","examples":["0xa406dff9c51cc2abbef3a811f0499e99a568bf781019f129ab45dca1df0e43e5"]},"miner":{"description":"Address of the block producer (miner/proposer).","examples":["0x0000000000000000000000000000000000000000"]},"proposer":{"description":"Consensus proposer of the block, when the chain records one.","examples":["0x0000000000000000000000000000000000000000"]},"gasUsed":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Total gas used by every transaction in this block.","examples":[4340281]},"gasLimit":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Maximum gas available for all transactions in this block.","examples":[500000000]},"transactionCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of transactions included in this block.","examples":[3]},"timestamp":{"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 block was produced, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.685Z"]}},"required":["number","hash","parentHash","miner","gasUsed","gasLimit","transactionCount","timestamp"],"additionalProperties":false,"description":"Payload for a `block:created` event (a new block header).","ref":"WebhookBlockEvent"},"type":{"type":"string","const":"block:created","examples":["block:created"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"additionalProperties":false,"title":"Block event"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","examples":[4217],"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"context":{"examples":[{"title":"Prod USDC large transfers"}],"type":"object","properties":{"description":{"type":"string","maxLength":500,"description":"Longer description of what this subscription is for.","examples":["Notify #ops when a large USDC transfer settles on mainnet."]},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","maxLength":500},"description":"Arbitrary key/value labels echoed on every delivered event and rendered by destinations (Slack fields, Better Stack log fields). Keys are 1–64 chars, values ≤500 chars, ≤20 entries.","examples":[{"env":"prod","team":"payments"}]},"title":{"type":"string","maxLength":120,"description":"Short label for this subscription.","examples":["Prod USDC large transfers"]}},"additionalProperties":false,"description":"Human context describing what this webhook subscription is for.","ref":"WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"type":"object","properties":{"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 deposit was first detected (ISO 8601).","examples":["2026-08-04T00:01:00.000Z"]},"depositAddressId":{"type":"string","pattern":"^fda_[A-Za-z0-9_-]+$","description":"Funding deposit address that detected the transfer.","examples":["fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx"]},"detectionTrigger":{"type":"string","enum":["chain","manual","poll","webhook"],"description":"How the deposit was first detected.","examples":["webhook"]},"destinationAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"additionalProperties":false,"description":"A token quantity with its denomination and decimal representation."},"destinationAmountRequired":{"description":"Destination amount required for completion, when known.","type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"additionalProperties":false},"destinationChain":{"type":"object","properties":{"addressFormat":{"type":"string","enum":["base58","base58check","hex"],"description":"Address encoding used by accounts and token identifiers on this chain.","examples":["hex"]},"id":{"type":"string","description":"CAIP-2 chain id.","examples":["eip155:8453"]},"kind":{"type":"string","enum":["evm","solana","tron"],"description":"Chain execution family used for provider routing.","examples":["evm"]},"name":{"type":"string","description":"Human-readable chain name.","examples":["Base"]}},"required":["addressFormat","id","kind","name"],"additionalProperties":false,"description":"A normalized chain reference for funding quotes.","ref":"FundingChain"},"destinationToken":{"type":"object","properties":{"address":{"type":"string","description":"Contract address, mint, or issuer address on the token chain.","examples":["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"currency":{"type":"string","description":"Monetary denomination represented by this token.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of decimal places this token uses.","examples":[6]},"name":{"type":"string","description":"Human-readable token name.","examples":["USD Coin"]},"standard":{"type":"string","description":"Token standard on the token chain.","examples":["ERC-20"]},"symbol":{"type":"string","description":"Short token ticker symbol.","examples":["USDC"]},"tokenKey":{"type":"string","description":"Stable Tempo token key scoped to the token chain.","examples":["eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"verified":{"type":"boolean","description":"Whether Tempo recognizes this token in its funding quote inventory.","examples":[true]}},"required":["address","currency","decimals","name","standard","symbol","tokenKey","verified"],"additionalProperties":false,"description":"A normalized token reference for funding quotes.","ref":"FundingToken"},"destinationTransactionHashes":{"readOnly":true,"description":"Verified destination transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]],"type":"array","items":{"type":"string"}},"id":{"type":"string","pattern":"^fdp_[A-Za-z0-9_-]+$","description":"Funding deposit id (`fdp_…`).","examples":["fdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx"]},"provider":{"type":"object","properties":{"id":{"type":"string","description":"Stable provider id.","examples":["relay"]},"name":{"type":"string","description":"Human-readable provider name.","examples":["Relay"]}},"required":["id","name"],"additionalProperties":false,"description":"Provider metadata embedded in a funding quote.","ref":"FundingProvider"},"recipient":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Tempo account that receives the completed deposit.","examples":["0x1111111111111111111111111111111111111111"]},"refundAddress":{"type":"string","description":"Source-chain address that receives a refund.","examples":["TJRabPrwbZy45sbavfcjinPJC18kjpRTv8"]},"refundAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"additionalProperties":false,"description":"A token quantity with its denomination and decimal representation."},"refundTransactionHashes":{"readOnly":true,"description":"Verified source-chain refund transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]],"type":"array","items":{"type":"string"}},"sender":{"description":"Observed source-chain sender, when available.","examples":["TJRabPrwbZy45sbavfcjinPJC18kjpRTv8"],"type":"string"},"sourceAmount":{"description":"Verified source amount, when source evidence is available.","type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"additionalProperties":false},"sourceChain":{"type":"object","properties":{"addressFormat":{"type":"string","enum":["base58","base58check","hex"],"description":"Address encoding used by accounts and token identifiers on this chain.","examples":["hex"]},"id":{"type":"string","description":"CAIP-2 chain id.","examples":["eip155:8453"]},"kind":{"type":"string","enum":["evm","solana","tron"],"description":"Chain execution family used for provider routing.","examples":["evm"]},"name":{"type":"string","description":"Human-readable chain name.","examples":["Base"]}},"required":["addressFormat","id","kind","name"],"additionalProperties":false,"description":"A normalized chain reference for funding quotes.","ref":"FundingChain"},"sourceToken":{"type":"object","properties":{"address":{"type":"string","description":"Contract address, mint, or issuer address on the token chain.","examples":["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"currency":{"type":"string","description":"Monetary denomination represented by this token.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of decimal places this token uses.","examples":[6]},"name":{"type":"string","description":"Human-readable token name.","examples":["USD Coin"]},"standard":{"type":"string","description":"Token standard on the token chain.","examples":["ERC-20"]},"symbol":{"type":"string","description":"Short token ticker symbol.","examples":["USDC"]},"tokenKey":{"type":"string","description":"Stable Tempo token key scoped to the token chain.","examples":["eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"verified":{"type":"boolean","description":"Whether Tempo recognizes this token in its funding quote inventory.","examples":[true]}},"required":["address","currency","decimals","name","standard","symbol","tokenKey","verified"],"additionalProperties":false,"description":"A normalized token reference for funding quotes.","ref":"FundingToken"},"sourceTransactionHashes":{"readOnly":true,"description":"Provider-observed source transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]],"type":"array","items":{"type":"string"}},"sourceTransferIndex":{"description":"Verified transfer position within the source transaction.","examples":[0],"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"type":"string","enum":["action-required","bridging","completed","detected","refunded","refunding","settling"],"description":"Current delivery status of the deposit.","examples":["detected"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","enum":["delivery_failed","delivery_liquidity_unavailable","manual_recovery_required","refund_failed","source_amount_not_supported","source_token_mismatch","subsidy_balance_unavailable","subsidy_failed"],"description":"Stable machine-readable reason code.","examples":["delivery_liquidity_unavailable"]},"message":{"type":"string","description":"Human-readable explanation of the current status.","examples":["The required destination amount is not currently available."]}},"required":["code","message"],"additionalProperties":false,"description":"Why a deposit needs attention or recovery.","ref":"FundingDepositStatusReason"},"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":"When the deposit last materially changed (ISO 8601).","examples":["2026-08-04T00:02:00.000Z"]}},"required":["createdAt","depositAddressId","destinationChain","destinationToken","id","provider","recipient","refundAddress","sourceChain","sourceToken","sourceTransactionHashes","status","updatedAt"],"additionalProperties":false,"description":"One detected deposit and its delivery status.","ref":"FundingDeposit"},"type":{"type":"string","const":"funding:deposit.updated","examples":["funding:deposit.updated"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"additionalProperties":false,"title":"Funding deposit updated event"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","examples":[4217],"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"context":{"examples":[{"title":"Prod USDC large transfers"}],"type":"object","properties":{"description":{"type":"string","maxLength":500,"description":"Longer description of what this subscription is for.","examples":["Notify #ops when a large USDC transfer settles on mainnet."]},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","maxLength":500},"description":"Arbitrary key/value labels echoed on every delivered event and rendered by destinations (Slack fields, Better Stack log fields). Keys are 1–64 chars, values ≤500 chars, ≤20 entries.","examples":[{"env":"prod","team":"payments"}]},"title":{"type":"string","maxLength":120,"description":"Short label for this subscription.","examples":["Prod USDC large transfers"]}},"additionalProperties":false,"description":"Human context describing what this webhook subscription is for.","ref":"WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"type":"object","properties":{"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 transfer was created (ISO 8601).","examples":["2026-07-30T04:00:00.000Z"]},"destinationAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"additionalProperties":false,"description":"A token quantity with its denomination and decimal representation."},"destinationAmountMin":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"additionalProperties":false,"description":"A token quantity with its denomination and decimal representation."},"destinationChain":{"type":"object","properties":{"addressFormat":{"type":"string","enum":["base58","base58check","hex"],"description":"Address encoding used by accounts and token identifiers on this chain.","examples":["hex"]},"id":{"type":"string","description":"CAIP-2 chain id.","examples":["eip155:8453"]},"kind":{"type":"string","enum":["evm","solana","tron"],"description":"Chain execution family used for provider routing.","examples":["evm"]},"name":{"type":"string","description":"Human-readable chain name.","examples":["Base"]}},"required":["addressFormat","id","kind","name"],"additionalProperties":false,"description":"A normalized chain reference for funding quotes.","ref":"FundingChain"},"destinationToken":{"type":"object","properties":{"address":{"type":"string","description":"Contract address, mint, or issuer address on the token chain.","examples":["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"currency":{"type":"string","description":"Monetary denomination represented by this token.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of decimal places this token uses.","examples":[6]},"name":{"type":"string","description":"Human-readable token name.","examples":["USD Coin"]},"standard":{"type":"string","description":"Token standard on the token chain.","examples":["ERC-20"]},"symbol":{"type":"string","description":"Short token ticker symbol.","examples":["USDC"]},"tokenKey":{"type":"string","description":"Stable Tempo token key scoped to the token chain.","examples":["eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"verified":{"type":"boolean","description":"Whether Tempo recognizes this token in its funding quote inventory.","examples":[true]}},"required":["address","currency","decimals","name","standard","symbol","tokenKey","verified"],"additionalProperties":false,"description":"A normalized token reference for funding quotes.","ref":"FundingToken"},"destinationTransactionHashes":{"type":"array","items":{"type":"string"},"description":"Verified destination transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]]},"fees":{"type":"array","items":{"type":"object","properties":{"amount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"additionalProperties":false,"description":"A token quantity with its denomination and decimal representation."},"side":{"type":"string","enum":["destination","source"],"description":"Which side of the transfer the fee is taken from.","examples":["destination"]},"token":{"type":"object","properties":{"address":{"type":"string","description":"Contract address, mint, or issuer address on the token chain.","examples":["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"currency":{"type":"string","description":"Monetary denomination represented by this token.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of decimal places this token uses.","examples":[6]},"name":{"type":"string","description":"Human-readable token name.","examples":["USD Coin"]},"standard":{"type":"string","description":"Token standard on the token chain.","examples":["ERC-20"]},"symbol":{"type":"string","description":"Short token ticker symbol.","examples":["USDC"]},"tokenKey":{"type":"string","description":"Stable Tempo token key scoped to the token chain.","examples":["eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"verified":{"type":"boolean","description":"Whether Tempo recognizes this token in its funding quote inventory.","examples":[true]}},"required":["address","currency","decimals","name","standard","symbol","tokenKey","verified"],"additionalProperties":false,"description":"A normalized token reference for funding quotes.","ref":"FundingToken"},"type":{"type":"string","enum":["provider"],"description":"What the fee pays for.","examples":["provider"]}},"required":["amount","side","token","type"],"additionalProperties":false,"description":"One fee applied to the transfer.","ref":"FundingTransferFee"},"description":"Fees applied to the transfer."},"id":{"type":"string","description":"Funding transfer id (`ftr_…`, lexically time-ordered).","examples":["ftr_001785729600000_2ZPE2gvateYEQ0dQslgvkhjx"]},"method":{"type":"string","enum":["depositAddress","transaction"],"description":"How the caller funds the transfer.","examples":["transaction"]},"mode":{"type":"string","enum":["exactDestination","exactSource"],"description":"Which side of the transfer the quoted amount fixes.","examples":["exactSource"]},"provider":{"type":"object","properties":{"id":{"type":"string","description":"Stable provider id.","examples":["relay"]},"name":{"type":"string","description":"Human-readable provider name.","examples":["Relay"]}},"required":["id","name"],"additionalProperties":false,"description":"Provider metadata embedded in a funding quote.","ref":"FundingProvider"},"quote":{"type":"object","properties":{"expiresAt":{"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 quoted terms stop being executable (ISO 8601).","examples":["2026-07-30T04:01:00.000Z"]},"sampledAt":{"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 provider produced the quote (ISO 8601).","examples":["2026-07-30T04:00:00.000Z"]}},"required":["expiresAt","sampledAt"],"additionalProperties":false,"description":"Freshness and validity window of the selected quote.","ref":"FundingTransferQuote"},"recipient":{"type":"string","description":"Final beneficiary of the transfer.","examples":["0x1111111111111111111111111111111111111111"]},"refundAddress":{"type":"string","description":"Source-chain refund recipient (deposit-address method).","examples":["0x2222222222222222222222222222222222222222"]},"refundAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"additionalProperties":false,"description":"A token quantity with its denomination and decimal representation."},"refundTransactionHashes":{"type":"array","items":{"type":"string"},"description":"Verified refund transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]]},"sender":{"type":"string","description":"Source-chain account that signs the funding action (transaction method).","examples":["0x2222222222222222222222222222222222222222"]},"sourceAmount":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"additionalProperties":false,"description":"A token quantity with its denomination and decimal representation."},"sourceAmountMax":{"type":"object","properties":{"baseUnits":{"type":"string","pattern":"^\\d+$","description":"The quantity in the token's smallest unit.","examples":["1000000"]},"currency":{"type":"string","description":"The monetary denomination of this quantity.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Decimal places used to convert `baseUnits` into `formatted`.","examples":[6]},"formatted":{"type":"string","pattern":"^\\d+(\\.\\d+)?$","description":"The quantity rendered in whole token units.","examples":["1"]}},"required":["baseUnits","currency","decimals","formatted"],"additionalProperties":false,"description":"A token quantity with its denomination and decimal representation."},"sourceChain":{"type":"object","properties":{"addressFormat":{"type":"string","enum":["base58","base58check","hex"],"description":"Address encoding used by accounts and token identifiers on this chain.","examples":["hex"]},"id":{"type":"string","description":"CAIP-2 chain id.","examples":["eip155:8453"]},"kind":{"type":"string","enum":["evm","solana","tron"],"description":"Chain execution family used for provider routing.","examples":["evm"]},"name":{"type":"string","description":"Human-readable chain name.","examples":["Base"]}},"required":["addressFormat","id","kind","name"],"additionalProperties":false,"description":"A normalized chain reference for funding quotes.","ref":"FundingChain"},"sourceToken":{"type":"object","properties":{"address":{"type":"string","description":"Contract address, mint, or issuer address on the token chain.","examples":["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"currency":{"type":"string","description":"Monetary denomination represented by this token.","examples":["USD"]},"decimals":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of decimal places this token uses.","examples":[6]},"name":{"type":"string","description":"Human-readable token name.","examples":["USD Coin"]},"standard":{"type":"string","description":"Token standard on the token chain.","examples":["ERC-20"]},"symbol":{"type":"string","description":"Short token ticker symbol.","examples":["USDC"]},"tokenKey":{"type":"string","description":"Stable Tempo token key scoped to the token chain.","examples":["eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"]},"verified":{"type":"boolean","description":"Whether Tempo recognizes this token in its funding quote inventory.","examples":[true]}},"required":["address","currency","decimals","name","standard","symbol","tokenKey","verified"],"additionalProperties":false,"description":"A normalized token reference for funding quotes.","ref":"FundingToken"},"sourceTransactionHashes":{"type":"array","items":{"type":"string"},"description":"Verified source transaction references.","examples":[["0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"]]},"status":{"type":"string","enum":["awaiting-source","processing","refunding","completed","refunded","action-required","expired"],"description":"Lifecycle status of the funding transfer.","examples":["awaiting-source"]},"statusReason":{"type":"object","properties":{"code":{"type":"string","enum":["destination_amount_below_minimum","destination_recovered","manual_recovery_required","refund_failed","source_amount_above_maximum","source_amount_below_minimum","source_chain_mismatch","source_token_mismatch"],"description":"Stable machine-readable reason code.","examples":["destination_amount_below_minimum"]},"message":{"type":"string","description":"Human-readable explanation of the reason.","examples":["The verified destination amount did not satisfy the quoted minimum."]}},"required":["code","message"],"additionalProperties":false,"description":"Why the transfer is in its current status, when context is needed.","ref":"FundingTransferStatusReason"},"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":"When the transfer last materially changed (ISO 8601).","examples":["2026-07-30T04:00:20.000Z"]},"version":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991,"description":"Monotonic revision that increments whenever the transfer materially changes.","examples":[1]}},"required":["createdAt","destinationChain","destinationToken","fees","id","method","mode","provider","quote","recipient","sourceAmount","sourceChain","sourceToken","status","updatedAt","version"],"additionalProperties":false,"description":"One durable funding transfer.","ref":"FundingTransfer"},"type":{"type":"string","const":"funding:transfer.updated","examples":["funding:transfer.updated"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"additionalProperties":false,"title":"Funding transfer updated event"},{"type":"object","properties":{"chainId":{"description":"Which Tempo network to query. Use the alias `mainnet` or `testnet`, or a numeric chain id (mainnet is `4217`).","examples":[4217],"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"context":{"examples":[{"title":"Prod USDC large transfers"}],"type":"object","properties":{"description":{"type":"string","maxLength":500,"description":"Longer description of what this subscription is for.","examples":["Notify #ops when a large USDC transfer settles on mainnet."]},"metadata":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","maxLength":500},"description":"Arbitrary key/value labels echoed on every delivered event and rendered by destinations (Slack fields, Better Stack log fields). Keys are 1–64 chars, values ≤500 chars, ≤20 entries.","examples":[{"env":"prod","team":"payments"}]},"title":{"type":"string","maxLength":120,"description":"Short label for this subscription.","examples":["Prod USDC large transfers"]}},"additionalProperties":false,"description":"Human context describing what this webhook subscription is for.","ref":"WebhookContext"},"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 Tempo built this delivery envelope, as an ISO 8601 timestamp.","examples":["2026-01-14T18:38:03.000Z"]},"id":{"type":"string","description":"Stable event ID (`evt_…`) for this delivery. Store it and ignore duplicates.","examples":["evt_abc123"]},"subscriptionId":{"type":"string","description":"Subscription ID (`wh_…`) that produced this delivery.","examples":["wh_001718668800000_2ZPE2gvateYEQ0dQslgvkhjx"]},"data":{"type":"object","properties":{"ping":{"type":"boolean","const":true,"description":"Marks this payload as a synthetic ping test.","examples":[true]}},"required":["ping"],"additionalProperties":false,"description":"Payload for a webhook ping test delivery.","ref":"WebhookPingEvent"},"type":{"type":"string","const":"ping","examples":["ping"]}},"required":["chainId","createdAt","id","subscriptionId","data","type"],"additionalProperties":false,"title":"Ping (test delivery)"}],"description":"The signed JSON payload Tempo POSTs to a webhook destination.","ref":"WebhookEventEnvelope"}}},"required":true},"responses":{"2xx":{"description":"Delivery acknowledged."}},"summary":"Webhook event delivery","tags":["Webhooks"]}}}}