{ "openapi": "3.0.0", "paths": { "/v1-alpha2/wallets/{walletLocator}/balances": { "get": { "operationId": "BalanceController-getBalanceForLocator-4", "summary": "Get Wallet Balance", "description": "Get the balance of a wallet for a given chain and currency\n\n**API scope required**: `wallets:balance.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::`\n- `userId::`\n- `userId::` (white label user example)\n- `phoneNumber::`\n- `twitter::`\n- `x::`\n- `me:` (Use when calling from the client side with a client API key)", "schema": { "type": "string" } }, { "name": "chains", "required": false, "in": "query", "description": "The blockchain(s) to query. Comma-separated list of chains", "schema": { "type": "string" } }, { "name": "tokens", "required": true, "in": "query", "description": "The tokens to query. Comma-separated list", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Returns the balance of the wallet for the given chain and currency", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletBalanceResponseDTO" } } } }, "400": { "description": "Returns an error (400) if the wallet locator is invalid or if the address type is not supported", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } }, "post": { "operationId": "BalanceController-fundWallet-4", "summary": "Fund Wallet", "description": "Send funds to a wallet.\n\n**API scope required**: `wallets.fund`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::`\n- `userId::`\n- `userId::` (white label user example)\n- `phoneNumber::`\n- `twitter::`\n- `x::`\n- `me:` (Use when calling from the client side with a client API key)", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FundWalletAmountDTO" } } } }, "responses": { "201": { "description": "Funds sent successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletBalanceResponseDTO" } } } }, "404": { "description": "Returns an error (404) if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/unstable/wallets/me{walletType}/tokens/{tokenLocator}/transfers": { "post": { "operationId": "WalletsSendTokenController-sendMeToken-2", "summary": "Transfer Token For Authenticated User", "description": "Sends a token of any type from the authenticated user's wallet to a recipient", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletType", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "tokenLocator", "required": true, "in": "path", "description": "A token locator that supports native tokens, fungible tokens, and NFTs across different chains. It can be of the format:\n- `chain:address[:tokenId]`\n- `chain:currency`\n- `chain:address`", "schema": { "type": "string" } }, { "name": "x-idempotency-key", "required": false, "in": "header", "description": "Unique key to prevent duplicate transaction creation", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendTokenDTO" } } } }, "responses": { "201": { "description": "The transaction has been successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsV1Alpha2TransactionResponseDTOClass" } } } } } } }, "/unstable/wallets/me{walletLocator}/transfers": { "get": { "operationId": "WalletActivityUnstableController-getMeWalletActivity-2", "summary": "Get Wallet Activity For Authenticated User (Unstable)", "description": "Retrieves activity history for the authenticated user's wallet including transactions and other relevant events. This is an unstable API that may change without notice.\n\n**API scope required**: `wallets.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "cursor", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "limit", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "sort", "required": false, "in": "query", "schema": { "default": "desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "chain", "required": true, "in": "query", "description": "The blockchain network to query. Either an EVM chain, Solana, or Stellar.", "schema": { "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc", "solana", "stellar" ], "type": "string" }, "example": "ethereum" }, { "name": "tokens", "required": true, "in": "query", "description": "The tokens to query. Comma-separated list of either tokens or token locator strings", "schema": { "type": "string" } }, { "name": "status", "required": true, "in": "query", "description": "The status of the transfers to query", "schema": { "enum": ["successful", "failed"], "type": "string" }, "example": "successful" }, { "name": "fromDate", "required": false, "in": "query", "description": "Filter transfers from this date (inclusive). ISO 8601 format. Supported for EVM and Stellar chains.", "schema": { "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": "string" }, "example": "2024-01-01T00:00:00Z" }, { "name": "toDate", "required": false, "in": "query", "description": "Filter transfers until this date (inclusive). ISO 8601 format. Supported for EVM and Stellar chains.", "schema": { "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": "string" }, "example": "2024-12-31T23:59:59Z" } ], "responses": { "200": { "description": "The wallet activity has been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsActivityResponseUnstableDTO" } } } }, "404": { "description": "Returns an error if a wallet with the specified type not found for the authenticated user", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/unstable/wallets/{walletLocator}/transfers": { "get": { "operationId": "WalletActivityUnstableController-getWalletActivity-2", "summary": "Get Wallet Activity (Unstable)", "description": "Retrieves activity history for the specified wallet including transactions and other relevant events. This is an unstable API that may change without notice.\n\n**API scope required**: `wallets.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "cursor", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "limit", "required": false, "in": "query", "schema": { "type": "string" } }, { "name": "sort", "required": false, "in": "query", "schema": { "default": "desc", "enum": ["asc", "desc"], "type": "string" } }, { "name": "chain", "required": true, "in": "query", "description": "The blockchain network to query. Either an EVM chain, Solana, or Stellar.", "schema": { "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc", "solana", "stellar" ], "type": "string" }, "example": "ethereum" }, { "name": "tokens", "required": true, "in": "query", "description": "The tokens to query. Comma-separated list of either tokens or token locator strings", "schema": { "type": "string" } }, { "name": "status", "required": true, "in": "query", "description": "The status of the transfers to query", "schema": { "enum": ["successful", "failed"], "type": "string" }, "example": "successful" }, { "name": "fromDate", "required": false, "in": "query", "description": "Filter transfers from this date (inclusive). ISO 8601 format. Supported for EVM and Stellar chains.", "schema": { "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": "string" }, "example": "2024-01-01T00:00:00Z" }, { "name": "toDate", "required": false, "in": "query", "description": "Filter transfers until this date (inclusive). ISO 8601 format. Supported for EVM and Stellar chains.", "schema": { "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": "string" }, "example": "2024-12-31T23:59:59Z" } ], "responses": { "200": { "description": "The wallet activity has been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsActivityResponseUnstableDTO" } } } }, "404": { "description": "Returns an error if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/unstable/wallets/{walletLocator}/tokens/{tokenLocator}/transfers": { "post": { "operationId": "WalletsSendTokenController-sendToken-2", "summary": "Transfer Token", "description": "Sends a token of any type from this wallet to a recipient", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::`\n- `userId::`\n- `userId::` (white label user example)\n- `phoneNumber::`\n- `twitter::`\n- `x::`\n- `me:` (Use when calling from the client side with a client API key)", "schema": { "type": "string" } }, { "name": "tokenLocator", "required": true, "in": "path", "description": "A token locator that supports native tokens, fungible tokens, and NFTs across different chains. It can be of the format:\n- `chain:address[:tokenId]`\n- `chain:currency`\n- `chain:address`", "schema": { "type": "string" } }, { "name": "x-idempotency-key", "required": false, "in": "header", "description": "Unique key to prevent duplicate transaction creation", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendTokenDTO" } } } }, "responses": { "201": { "description": "The transaction has been successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsV1Alpha2TransactionResponseWithSendParamsDTOClass" } } } } } } }, "/unstable/wallets/{walletLocator}/balances": { "get": { "operationId": "BalanceUnstableController-getBalanceForLocator-2", "summary": "Get Wallet Balance", "description": "Get the balance of a wallet for a given chain and currency\n\n**API scope required**: `wallets:balance.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "chains", "required": false, "in": "query", "description": "The blockchain(s) to query. Comma-separated list of chains", "schema": { "type": "string" } }, { "name": "tokens", "required": true, "in": "query", "description": "The tokens to query. Comma-separated list of either tokens or token locator strings", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Returns the balance of the wallet for the given chain and currency", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletBalanceUnstableResponseDTO" } } } }, "400": { "description": "Returns an error (400) if the wallet locator is invalid or if the address type is not supported", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/me{walletLocator}/transactions/{transactionId}/approvals": { "post": { "operationId": "WalletsV2025Controller-submitMeApprovals-2", "summary": "Approve Transaction For Authenticated User", "description": "Submit approval signature for a pending transaction. Required for transactions using external signers.\n\n**API scope required**: `wallets:transactions.sign`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "transactionId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitApprovalV2025DTO" } } } }, "responses": { "201": { "description": "The approval has successfully been submitted to the transaction.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } } }, "400": { "description": "Returns an error if the signer is not valid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "404": { "description": "Returns an error if the wallet or transaction is not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "409": { "description": "Returns an error if the signature for signer was already submitted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "422": { "description": "Returns an error if the transaction already has the required number of approvals", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/me{walletLocator}/transactions/{transactionId}": { "get": { "operationId": "WalletsV2025Controller-getMeTransaction-2", "summary": "Get Transaction For Authenticated User", "description": "Retrieves the current status and details of a specific transaction.\n\n**API scope required**: `wallets:transactions.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "transactionId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The transaction has been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } } }, "404": { "description": "Returns an error if the wallet or transaction is not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/me{walletLocator}/transactions": { "post": { "operationId": "WalletsV2025Controller-createMeTransaction-2", "summary": "Create Transaction For Authenticated User", "description": "Creates a new transaction for the authenticated user. Transaction will be automatically broadcast once it has all necessary approvals.\n\n**API scope required**: `wallets:transactions.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "x-idempotency-key", "required": true, "in": "header", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTransactionV2025DTOClass" } } } }, "responses": { "201": { "description": "The transaction has been successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } } }, "400": { "description": "Returns an error if the transaction or the provided signer is not valid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "404": { "description": "Returns an error if a wallet with the specified type is not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "422": { "description": "Returns an error if the transaction fails during simulation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2TransactionErrorDTO" } } } } } }, "get": { "operationId": "WalletsV2025Controller-getMeTransactionsWithoutChain-2", "summary": "Get Wallet Transactions For Authenticated User", "description": "Retrieves all transactions associated with the specified wallet. Optionally filter by date range using ISO 8601 format (e.g., 2025-10-27T00:00:00Z).\n\n**API scope required**: `wallets:transactions.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "page", "required": false, "in": "query", "schema": { "default": "1", "type": "string", "allOf": [ { "pattern": "^\\d+$" }, { "pattern": "^[1-9]\\d*$" } ] } }, { "name": "perPage", "required": false, "in": "query", "schema": { "default": "10", "type": "string", "allOf": [ { "pattern": "^\\d+$" }, { "pattern": "^[1-9]\\d*$" } ] } }, { "name": "dateFrom", "required": false, "in": "query", "schema": { "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": "string" } }, { "name": "dateTo", "required": false, "in": "query", "schema": { "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": "string" } } ], "responses": { "200": { "description": "The transactions have been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsMultipleTransactionV2025ResponseDTO" } } } }, "404": { "description": "Returns an error if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/me{walletLocator}/tokens/{tokenLocator}/transfers": { "post": { "operationId": "WalletsSendTokenV2025Controller-sendMeToken-2", "summary": "Transfer Token For Authenticated User", "description": "Sends a token of any type from the authenticated user's wallet to a recipient", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "tokenLocator", "required": true, "in": "path", "description": "A token locator that supports native tokens, fungible tokens, and NFTs across different chains. It can be of the format:\n- `chain:address[:tokenId]`\n- `chain:currency`\n- `chain:address`", "schema": { "type": "string" } }, { "name": "x-idempotency-key", "required": false, "in": "header", "description": "Unique key to prevent duplicate transaction creation", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendTokenV2025DTO" } } } }, "responses": { "201": { "description": "The transaction has been successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } } } } } }, "/2025-06-09/wallets/me{walletLocator}/signers/{signer}": { "get": { "operationId": "WalletsV2025Controller-getMeDelegatedSigner-2", "summary": "Get Delegated Signer For Authenticated User", "description": "Retrieve details about a specific delegated signer by its locator.\n\n**API scope required**: `wallets.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "signer", "required": true, "in": "path", "description": "The locator for the signer", "schema": { "title": "Signer Locator", "type": "string" }, "example": "external-wallet:0x1234567890123456789012345678901234567890" } ], "responses": { "200": { "description": "The delegated signer has been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DelegatedSignerV2025DtoClass" } } } }, "404": { "description": "Returns an error if the wallet or signer not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } }, "delete": { "operationId": "WalletsV2025Controller-removeMeDelegatedSigner-2", "summary": "Remove Delegated Signer For Authenticated User", "description": "Remove an operational signer from a smart wallet.\n\n**API scope required**: `wallets.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "signer", "required": true, "in": "path", "description": "The locator for the signer", "schema": { "title": "Signer Locator", "type": "string" }, "example": "external-wallet:0x1234567890123456789012345678901234567890" }, { "name": "chain", "required": false, "in": "query", "description": "The chain to remove the signer from. Required for EVM wallets.", "schema": { "enum": [ "abstract", "apechain", "arbitrum", "arbitrumnova", "avalanche", "base", "bsc", "flow", "mantle", "optimism", "polygon", "scroll", "sei-pacific-1", "shape", "story", "tempo", "zora", "ethereum", "abstract-testnet", "arbitrum-sepolia", "avalanche-fuji", "base-sepolia", "curtis", "ethereum-sepolia", "flow-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "scroll-sepolia", "sei-atlantic-2-testnet", "story-testnet", "zora-sepolia", "arc-testnet", "tempo-testnet" ] } }, { "name": "approver", "required": false, "in": "query", "description": "The recovery signer that authorizes this operation. Required when the wallet has multiple recovery signers.", "schema": { "title": "Signer Locator", "type": "string" }, "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q" } ], "responses": { "200": { "description": "The delegated signer removal has been initiated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } } }, "400": { "description": "Returns an error if the signer cannot be removed (e.g. admin signer or unsupported wallet type)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "404": { "description": "Returns an error if the wallet or signer not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/me{walletLocator}/signers": { "post": { "operationId": "WalletsV2025Controller-createMeDelegatedSigner-2", "summary": "Create Delegated Signer For Authenticated User", "description": "Register a delegated key for a smart wallet with optional restrictions around permissions and expiry date.\n\n**API scope required**: `wallets.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSignerV2025InputDtoClass" } } } }, "responses": { "201": { "description": "The delegated signer has been successfully added to the wallet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DelegatedSignerV2025DtoClass" } } } }, "400": { "description": "Returns an error if a delegated signer with specified configuration already exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "404": { "description": "Returns an error if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/me{walletLocator}/signatures/{signatureId}/approvals": { "post": { "operationId": "WalletsV2025Controller-submitMeSignatureApprovals-2", "summary": "Approve Signature For Authenticated User", "description": "Submit approval for a signature to sign a message or typed data.\n\n**API scope required**: `wallets:signatures.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "signatureId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitApprovalV2025DTO" } } } }, "responses": { "201": { "description": "The signature has been successfully approved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsSignatureV2025ResponseDTO" } } } }, "400": { "description": "Returns an error if the signature is not valid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "404": { "description": "Returns an error if the wallet or signature not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/me{walletLocator}/signatures/{signatureId}": { "get": { "operationId": "WalletsV2025Controller-getMeSignature-2", "summary": "Get Signature For Authenticated User", "description": "Retrieves details about a specific signature by its ID.\n\n**API scope required**: `wallets:signatures.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "signatureId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The signature has been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsSignatureV2025ResponseDTO" } } } }, "404": { "description": "Returns an error if the wallet or signature not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/me{walletLocator}/signatures": { "post": { "operationId": "WalletsV2025Controller-createMeSignatureRequest-2", "summary": "Create Signature For Authenticated User", "description": "Creates a new signature for signing messages or typed data.\n\n**API scope required**: `wallets:signatures.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "x-idempotency-key", "required": true, "in": "header", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSignatureV2025DTO" } } } }, "responses": { "201": { "description": "The signature has been successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsSignatureV2025ResponseDTO" } } } }, "400": { "description": "Returns an error if the signature type is not supported", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "404": { "description": "Returns an error if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } }, "get": { "operationId": "WalletsV2025Controller-getMeSignatures-2", "summary": "Get Wallet Signatures For Authenticated User", "description": "Retrieves all signatures associated with the specified wallet.\n\n**API scope required**: `wallets:signatures.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } }, { "name": "page", "required": false, "in": "query", "schema": { "type": "string", "allOf": [ { "pattern": "^\\d+$" }, { "pattern": "^[1-9]\\d*$" } ] } }, { "name": "perPage", "required": false, "in": "query", "schema": { "type": "string", "allOf": [ { "pattern": "^\\d+$" }, { "pattern": "^[1-9]\\d*$" } ] } } ], "responses": { "200": { "description": "The signatures have been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsMultipleSignatureV2025ResponseDTO" } } } }, "404": { "description": "Returns an error if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/me{walletLocator}": { "get": { "operationId": "WalletsV2025Controller-getMeWallet-2", "summary": "Get Wallet For Authenticated User", "description": "Retrieves a wallet for the authenticated user.\n\n**API scope required**: `wallets.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The record has been successfully retreived.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV2025ResponseDTOClass" } } } } } } }, "/2025-06-09/wallets/me": { "post": { "operationId": "WalletsV2025Controller-createMeWallet-2", "summary": "Create Wallet For Authenticated User", "description": "Creates a new wallet of specified type for the authenticated user. If called for a user who already has a wallet, returns the existing wallet. Supports both custodial and non-custodial wallet types. Uses client-side API key authentication.\n\n**API scope required**: `wallets.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWalletV2025DTOClass" } } } }, "responses": { "201": { "description": "Returns an existing wallet (200) if one already exists for this user, or creates and returns a new wallet (201).", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV2025ResponseDTOClass" } } } } } } }, "/2025-06-09/wallets/card-providers/{providerName}": { "patch": { "operationId": "CardsV2025Controller-updateCardProvider-2", "summary": "Update Card Provider", "description": "Update a card provider for the project.\n\n**API scope required**: `wallets:cards.update`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "providerName", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetupCardProviderInputDTO" } } } }, "responses": { "204": { "description": "Card provider updated successfully. No content returned." } } }, "delete": { "operationId": "CardsV2025Controller-deleteCardProvider-2", "summary": "Delete Card Provider", "description": "Delete a card provider for the project.\n\n**API scope required**: `wallets:cards.delete`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "providerName", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "204": { "description": "Card provider deleted successfully. No content returned." } } } }, "/2025-06-09/wallets/card-providers": { "post": { "operationId": "CardsV2025Controller-setupCardProvider-2", "summary": "Setup Card Provider", "description": "Register a card provider for the project.\n\n**API scope required**: `wallets:cards.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SetupCardProviderInputDTO" } } } }, "responses": { "204": { "description": "Card provider configured successfully. No content returned." } } } }, "/2025-06-09/wallets/{walletLocator}/transactions/{transactionId}/approvals": { "post": { "operationId": "WalletsV2025Controller-submitApprovals-2", "summary": "Approve Transaction", "description": "Submit approval signature for a pending transaction. Required for transactions using external signers.\n\n**API scope required**: `wallets:transactions.sign`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "transactionId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitApprovalV2025DTO" } } } }, "responses": { "201": { "description": "The approval has successfully been submitted to the transaction.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } } }, "400": { "description": "Returns an error if the signer is not valid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "404": { "description": "Returns an error if the wallet or transaction is not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "409": { "description": "Returns an error if the signature for signer was already submitted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "422": { "description": "Returns an error if the transaction already has the required number of approvals", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/{walletLocator}/transactions/{transactionId}": { "get": { "operationId": "WalletsV2025Controller-getTransaction-2", "summary": "Get Transaction", "description": "Retrieves the current status and details of a specific transaction.\n\n**API scope required**: `wallets:transactions.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "transactionId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The transaction has been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } } }, "404": { "description": "Returns an error if the wallet or transaction is not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/{walletLocator}/transactions": { "post": { "operationId": "WalletsV2025Controller-createTransaction-2", "summary": "Create Transaction", "description": "Creates a new transaction for the specified wallet. Transaction will be automatically broadcast once it has all necessary approvals.\n\n**API scope required**: `wallets:transactions.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "x-idempotency-key", "required": false, "in": "header", "description": "Unique key to prevent duplicate transaction creation", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateTransactionV2025DTOClass" } } } }, "responses": { "201": { "description": "The transaction has been successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } } }, "400": { "description": "Returns an error if the transaction or the provided signer is not valid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "404": { "description": "Returns an error if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "422": { "description": "Returns an error if the transaction fails during simulation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2TransactionErrorDTO" } } } } } }, "get": { "operationId": "WalletsV2025Controller-getTransactionsWithoutChain-2", "summary": "Get Wallet Transactions", "description": "Retrieves all transactions associated with the specified wallet. Optionally filter by date range using ISO 8601 format (e.g., 2025-10-27T00:00:00Z).\n\n**API scope required**: `wallets:transactions.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "page", "required": false, "in": "query", "schema": { "default": "1", "type": "string", "allOf": [ { "pattern": "^\\d+$" }, { "pattern": "^[1-9]\\d*$" } ] } }, { "name": "perPage", "required": false, "in": "query", "schema": { "default": "10", "type": "string", "allOf": [ { "pattern": "^\\d+$" }, { "pattern": "^[1-9]\\d*$" } ] } }, { "name": "dateFrom", "required": false, "in": "query", "schema": { "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": "string" } }, { "name": "dateTo", "required": false, "in": "query", "schema": { "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": "string" } } ], "responses": { "200": { "description": "The transactions have been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsMultipleTransactionV2025ResponseDTO" } } } }, "404": { "description": "Returns an error if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/{walletLocator}/tokens/{tokenLocator}/transfers/{transactionId}": { "get": { "operationId": "WalletsSendTokenV2025Controller-getTransferTransaction-2", "summary": "Get Transfer Transaction", "description": "Retrieves the current status and details of a specific transfer transaction.\n\n**API scope required**: `wallets:transactions.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "tokenLocator", "required": true, "in": "path", "description": "A token locator that supports native tokens, fungible tokens, and NFTs across different chains. It can be of the format:\n- `chain:address[:tokenId]`\n- `chain:currency`\n- `chain:address`", "schema": { "type": "string" } }, { "name": "transactionId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The transfer transaction has been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } } }, "404": { "description": "Returns an error if the wallet or transaction is not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/{walletLocator}/tokens/{tokenLocator}/transfers": { "post": { "operationId": "WalletsSendTokenV2025Controller-sendToken-2", "summary": "Transfer Token", "description": "Sends a token of any type from this wallet to a recipient", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "tokenLocator", "required": true, "in": "path", "description": "A token locator that supports native tokens, fungible tokens, and NFTs across different chains. It can be of the format:\n- `chain:address[:tokenId]`\n- `chain:currency`\n- `chain:address`", "schema": { "type": "string" } }, { "name": "x-idempotency-key", "required": false, "in": "header", "description": "Unique key to prevent duplicate transaction creation", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendOrDepositTokenV2025DTOClass" } } } }, "responses": { "201": { "description": "The transaction has been successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } } } } } }, "/2025-06-09/wallets/{walletLocator}/signers/{signer}": { "get": { "operationId": "WalletsV2025Controller-getDelegatedSigner-2", "summary": "Get Delegated Signer", "description": "Retrieve details about a specific delegated signer by its locator.\n\n**API scope required**: `wallets.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "signer", "required": true, "in": "path", "description": "The locator for the signer", "schema": { "title": "Signer Locator", "type": "string" }, "example": "external-wallet:0x1234567890123456789012345678901234567890" } ], "responses": { "200": { "description": "The delegated signer has been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DelegatedSignerV2025DtoClass" } } } }, "404": { "description": "Returns an error if the wallet or signer not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } }, "delete": { "operationId": "WalletsV2025Controller-removeDelegatedSigner-2", "summary": "Remove Delegated Signer", "description": "Remove an operational signer from a smart wallet.\n\n**API scope required**: `wallets.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "signer", "required": true, "in": "path", "description": "The locator for the signer", "schema": { "title": "Signer Locator", "type": "string" }, "example": "external-wallet:0x1234567890123456789012345678901234567890" }, { "name": "chain", "required": false, "in": "query", "description": "The chain to remove the signer from. Required for EVM wallets.", "schema": { "enum": [ "abstract", "apechain", "arbitrum", "arbitrumnova", "avalanche", "base", "bsc", "flow", "mantle", "optimism", "polygon", "scroll", "sei-pacific-1", "shape", "story", "tempo", "zora", "ethereum", "abstract-testnet", "arbitrum-sepolia", "avalanche-fuji", "base-sepolia", "curtis", "ethereum-sepolia", "flow-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "scroll-sepolia", "sei-atlantic-2-testnet", "story-testnet", "zora-sepolia", "arc-testnet", "tempo-testnet" ] } }, { "name": "approver", "required": false, "in": "query", "description": "The recovery signer that authorizes this operation. Required when the wallet has multiple recovery signers.", "schema": { "title": "Signer Locator", "type": "string" }, "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q" } ], "responses": { "200": { "description": "The delegated signer removal has been initiated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } } }, "400": { "description": "Returns an error if the signer cannot be removed (e.g. admin signer or unsupported wallet type)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "404": { "description": "Returns an error if the wallet or signer not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/{walletLocator}/signers": { "post": { "operationId": "WalletsV2025Controller-createDelegatedSigner-2", "summary": "Create Delegated Signer", "description": "Create a delegated signer for a smart wallet with optional restrictions around permissions and expiry date.\n\n**API scope required**: `wallets.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSignerV2025InputDtoClass" } } } }, "responses": { "201": { "description": "The delegated signer has been successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DelegatedSignerV2025DtoClass" } } } }, "400": { "description": "Returns an error if a delegated signer with specified configuration already exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "404": { "description": "Returns an error if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/me{walletLocator}/recovery-methods": { "post": { "description": "Add a recovery method to a wallet.", "operationId": "WalletsV2025Controller-addMeRecoveryMethods-2", "parameters": [ { "description": "API key required for authentication", "in": "header", "name": "X-API-KEY", "required": true, "schema": { "type": "string" } }, { "in": "path", "name": "walletLocator", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddRecoveryMethodsV2025DTOClass" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddRecoveryMethodsResponseV2025DTOClass" } } }, "description": "The recovery method transaction has been created." } }, "summary": "Add Recovery Method To A Wallet" } }, "/2025-06-09/wallets/me{walletLocator}/recovery-methods/{signer}": { "delete": { "description": "Remove one recovery method from a wallet.", "operationId": "WalletsV2025Controller-removeMeRecoveryMethod-2", "parameters": [ { "description": "API key required for authentication", "in": "header", "name": "X-API-KEY", "required": true, "schema": { "type": "string" } }, { "in": "path", "name": "walletLocator", "required": true, "schema": { "type": "string" } }, { "description": "The locator for the signer", "example": "external-wallet:0x1234567890123456789012345678901234567890", "in": "path", "name": "signer", "required": true, "schema": { "title": "Signer Locator", "type": "string" } }, { "description": "The chain to remove the recovery method from. Required for EVM wallets.", "in": "query", "name": "chain", "required": false, "schema": { "enum": [ "abstract", "abstract-testnet", "apechain", "arbitrum", "arbitrum-sepolia", "arbitrumnova", "arc", "arc-testnet", "avalanche", "avalanche-fuji", "base", "base-sepolia", "bsc", "celo", "celo-sepolia", "curtis", "ethereum", "ethereum-sepolia", "flow", "flow-testnet", "mantle", "mantle-sepolia", "mode", "mode-sepolia", "optimism", "optimism-sepolia", "plume", "plume-testnet", "polygon", "polygon-amoy", "robinhood-chain", "robinhood-chain-testnet", "scroll", "scroll-sepolia", "sei-atlantic-2-testnet", "sei-pacific-1", "shape", "story", "story-testnet", "tempo", "tempo-testnet", "world-chain", "world-chain-sepolia", "zora", "zora-sepolia" ] } }, { "description": "The recovery method that authorizes this operation.", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q", "in": "query", "name": "approver", "required": true, "schema": { "title": "Signer Locator", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } }, "description": "The recovery method transaction has been created." } }, "summary": "Remove Recovery Method From A Wallet" } }, "/2025-06-09/wallets/{walletLocator}/recovery-methods": { "post": { "description": "Add a recovery method to a wallet.", "operationId": "WalletsV2025Controller-addRecoveryMethods-2", "parameters": [ { "description": "API key required for authentication", "in": "header", "name": "X-API-KEY", "required": true, "schema": { "type": "string" } }, { "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "in": "path", "name": "walletLocator", "required": true, "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddRecoveryMethodsV2025DTOClass" } } }, "required": true }, "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddRecoveryMethodsResponseV2025DTOClass" } } }, "description": "The recovery method transaction has been created." } }, "summary": "Add Recovery Method" } }, "/2025-06-09/wallets/{walletLocator}/recovery-methods/{signer}": { "delete": { "description": "Remove one recovery method from a wallet.", "operationId": "WalletsV2025Controller-removeRecoveryMethod-2", "parameters": [ { "description": "API key required for authentication", "in": "header", "name": "X-API-KEY", "required": true, "schema": { "type": "string" } }, { "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "in": "path", "name": "walletLocator", "required": true, "schema": { "type": "string" } }, { "description": "The locator for the signer", "example": "external-wallet:0x1234567890123456789012345678901234567890", "in": "path", "name": "signer", "required": true, "schema": { "title": "Signer Locator", "type": "string" } }, { "description": "The chain to remove the recovery method from. Required for EVM wallets.", "in": "query", "name": "chain", "required": false, "schema": { "enum": [ "abstract", "abstract-testnet", "apechain", "arbitrum", "arbitrum-sepolia", "arbitrumnova", "arc", "arc-testnet", "avalanche", "avalanche-fuji", "base", "base-sepolia", "bsc", "celo", "celo-sepolia", "curtis", "ethereum", "ethereum-sepolia", "flow", "flow-testnet", "mantle", "mantle-sepolia", "mode", "mode-sepolia", "optimism", "optimism-sepolia", "plume", "plume-testnet", "polygon", "polygon-amoy", "robinhood-chain", "robinhood-chain-testnet", "scroll", "scroll-sepolia", "sei-atlantic-2-testnet", "sei-pacific-1", "shape", "story", "story-testnet", "tempo", "tempo-testnet", "world-chain", "world-chain-sepolia", "zora", "zora-sepolia" ] } }, { "description": "The recovery method that authorizes this operation.", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q", "in": "query", "name": "approver", "required": true, "schema": { "title": "Signer Locator", "type": "string" } } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsTransactionV2025ResponseDTOClass" } } }, "description": "The recovery method transaction has been created." } }, "summary": "Remove Recovery Method" } }, "/2025-06-09/wallets/{walletLocator}/signatures/{signatureId}/approvals": { "post": { "operationId": "WalletsV2025Controller-submitSignatureApprovals-2", "summary": "Approve Signature", "description": "Submit approval for a signature to sign a message or typed data.\n\n**API scope required**: `wallets:signatures.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "signatureId", "required": true, "in": "path", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitApprovalV2025DTO" } } } }, "responses": { "201": { "description": "The signature has been successfully approved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsSignatureV2025ResponseDTO" } } } }, "400": { "description": "Returns an error if the signature is not valid", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "404": { "description": "Returns an error if the wallet or signature not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/{walletLocator}/signatures/{signatureId}": { "get": { "operationId": "WalletsV2025Controller-getSignature-2", "summary": "Get Signature", "description": "Retrieves details about a specific signature by its ID.\n\n**API scope required**: `wallets:signatures.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "signatureId", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The signature has been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsSignatureV2025ResponseDTO" } } } }, "404": { "description": "Returns an error if the wallet or signature not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/{walletLocator}/signatures": { "post": { "operationId": "WalletsV2025Controller-createSignatureRequest-2", "summary": "Create Signature", "description": "Creates a new signature for signing messages or typed data.\n\n**API scope required**: `wallets:signatures.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "x-idempotency-key", "required": false, "in": "header", "description": "Unique key to prevent duplicate signature creation", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSignatureV2025DTO" } } } }, "responses": { "201": { "description": "The signature has been successfully created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsSignatureV2025ResponseDTO" } } } }, "400": { "description": "Returns an error if the signature type is not supported", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } }, "404": { "description": "Returns an error if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } }, "get": { "operationId": "WalletsV2025Controller-getAllSignatures-2", "summary": "Get All Signatures", "description": "Retrieves all signatures associated with the specified wallet.\n\n**API scope required**: `wallets:signatures.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "page", "required": false, "in": "query", "schema": { "type": "string", "allOf": [ { "pattern": "^\\d+$" }, { "pattern": "^[1-9]\\d*$" } ] } }, { "name": "perPage", "required": false, "in": "query", "schema": { "type": "string", "allOf": [ { "pattern": "^\\d+$" }, { "pattern": "^[1-9]\\d*$" } ] } } ], "responses": { "200": { "description": "The signatures have been successfully retrieved.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletsMultipleSignatureV2025ResponseDTO" } } } }, "404": { "description": "Returns an error if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/{walletLocator}/cards/{cardLocator}": { "get": { "operationId": "CardsV2025Controller-getCard-2", "summary": "Get Card", "description": "Retrieve a single registered card by its id (UUID) or `:` locator. Only supported on stellar-smart-wallet.\n\n**API scope required**: `wallets:cards.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "cardLocator", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The registered card.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardV2025ResponseDTO" } } } } } }, "delete": { "operationId": "CardsV2025Controller-deleteCard-2", "summary": "Delete Card", "description": "Remove a card from a smart wallet. Returns a transaction to be signed for on-chain signer revocation. Only supported on stellar-smart-wallet.\n\n**API scope required**: `wallets:cards.delete`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "cardLocator", "required": true, "in": "path", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Card removed. Sign and submit the returned transaction to complete on-chain cleanup, if any.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DeleteCardV2025ResponseDTO" } } } } } } }, "/2025-06-09/wallets/{walletLocator}/cards": { "post": { "operationId": "CardsV2025Controller-createCard-2", "summary": "Create Card", "description": "Register a card on a smart wallet. Returns a transaction to be signed for on-chain signer setup. Only supported on stellar-smart-wallet.\n\n**API scope required**: `wallets:cards.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateCardInputDTO" } } } }, "responses": { "201": { "description": "Card registered. Sign and submit the returned transaction.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardV2025ResponseDTO" } } } } } }, "get": { "operationId": "CardsV2025Controller-getCards-2", "summary": "Get Cards", "description": "Retrieve the card provider configuration and registered cards for a smart wallet. Only supported on stellar-smart-wallet.\n\n**API scope required**: `wallets:cards.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "page", "required": false, "in": "query", "schema": { "type": "string", "allOf": [ { "pattern": "^\\d+$" }, { "pattern": "^[1-9]\\d*$" } ] } }, { "name": "perPage", "required": false, "in": "query", "schema": { "type": "string", "allOf": [ { "pattern": "^\\d+$" }, { "pattern": "^[1-9]\\d*$" } ] } } ], "responses": { "200": { "description": "Cards registered on the wallet.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CardListV2025ResponseDTO" } } } } } } }, "/2025-06-09/wallets/{walletLocator}/balances": { "get": { "operationId": "BalanceV20250609Controller-getBalanceForLocator-2", "summary": "Get Wallet Balance", "description": "Get the balance of a wallet for a given chain and currency\n\n**API scope required**: `wallets:balance.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } }, { "name": "chains", "required": false, "in": "query", "description": "The blockchain(s) to query. Comma-separated list of chains", "schema": { "type": "string" } }, { "name": "tokens", "required": true, "in": "query", "description": "The tokens to query. Comma-separated list of either tokens or token locator strings", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Returns the balance of the wallet for the given chain and currency", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletBalanceV20250609ResponseDTO" } } } }, "400": { "description": "Returns an error (400) if the wallet locator is invalid or if the address type is not supported", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets/{walletLocator}": { "get": { "operationId": "WalletsV2025Controller-getWalletByLocator-2", "summary": "Get Wallet By Locator", "description": "Retrieves a wallet by its locator (address or user identifier and wallet type)\n\n**API scope required**: `wallets.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::[:][:alias:]` (walletType defaults to 'smart')\n- `userId::[:][:alias:]` (white label user example)\n- `phoneNumber::[:][:alias:]`\n- `twitter::[:][:alias:]`\n- `x::[:][:alias:]`\n- `me:[:][:alias:]` (Use when calling from the client side with a client API key)\n- `chainType[:]:alias:`", "schema": { "type": "string" } } ], "responses": { "200": { "description": "The record has been successfully retreived.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV2025ResponseDTOClass" } } } }, "404": { "description": "Returns an error if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2025-06-09/wallets": { "post": { "operationId": "WalletsV2025Controller-createWallet-2", "summary": "Create Wallet", "description": "Creates a new wallet of specified type. If called with an idempotency key or for a user who already has a wallet, returns existing wallet. When owner is provided, subsequent calls with the same owner will return the existing wallet. Supports both custodial and non-custodial wallet types.\n\n**API scope required**: `wallets.create`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "x-idempotency-key", "required": false, "in": "header", "description": "Unique key to prevent duplicate wallet creation", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateWalletV2025DTOClass" } } } }, "responses": { "201": { "description": "Returns an existing wallet (200) if one already exists for the provided owner or idempotencyKey, or creates and returns a new wallet (201). The response includes the wallet details and whether it was newly created.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV2025ResponseDTOClass" } } } }, "400": { "description": "Returns an error if a wallet with the specified creation seed and signer configuration already exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } }, "/2024-09-26/wallets/{walletLocator}/balances": { "get": { "operationId": "BalanceController-getBalanceForLocator-5", "summary": "Get Wallet Balance", "description": "Get the balance of a wallet for a given chain and currency\n\n**API scope required**: `wallets:balance.read`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::`\n- `userId::`\n- `userId::` (white label user example)\n- `phoneNumber::`\n- `twitter::`\n- `x::`\n- `me:` (Use when calling from the client side with a client API key)", "schema": { "type": "string" } }, { "name": "chains", "required": false, "in": "query", "description": "The blockchain(s) to query. Comma-separated list of chains", "schema": { "type": "string" } }, { "name": "tokens", "required": true, "in": "query", "description": "The tokens to query. Comma-separated list", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Returns the balance of the wallet for the given chain and currency", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletBalanceResponseDTO" } } } }, "400": { "description": "Returns an error (400) if the wallet locator is invalid or if the address type is not supported", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } }, "post": { "operationId": "BalanceController-fundWallet-5", "summary": "Fund Wallet", "description": "Send funds to a wallet.\n\n**API scope required**: `wallets.fund`", "parameters": [ { "name": "X-API-KEY", "in": "header", "description": "API key required for authentication", "required": true, "schema": { "type": "string" } }, { "name": "walletLocator", "required": true, "in": "path", "description": "A wallet locator can be of the format:\n- ``\n- `email::`\n- `userId::`\n- `userId::` (white label user example)\n- `phoneNumber::`\n- `twitter::`\n- `x::`\n- `me:` (Use when calling from the client side with a client API key)", "schema": { "type": "string" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FundWalletAmountDTO" } } } }, "responses": { "201": { "description": "Funds sent successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletBalanceResponseDTO" } } } }, "404": { "description": "Returns an error (404) if a wallet with the specified locator not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WalletV1Alpha2ErrorDTO" } } } } } } } }, "info": { "title": "Crossmint Wallets API", "description": "Crossmint Wallets API", "version": "1.0.0", "contact": { "name": "Crossmint Support", "url": "https://www.crossmint.com", "email": "support@crossmint.com" } }, "tags": [], "servers": [ { "url": "https://staging.crossmint.com/api", "description": "Staging environment (testnets)" }, { "url": "https://www.crossmint.com/api", "description": "Production environment (mainnets)" } ], "components": { "schemas": { "CardListV2025ResponseDTO": { "type": "object", "properties": { "cards": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Crossmint-assigned card identifier (UUID), distinct from the provider's cardId." }, "provider": { "type": "object", "properties": { "type": { "type": "string", "description": "Card provider.", "enum": ["rain"] }, "cardId": { "type": "string", "description": "The provider's identifier for the card (the cardId supplied at creation)." }, "userId": { "type": "string", "description": "Provider-side user identifier the card is registered against." }, "autoTopupConfig": { "type": "object", "properties": { "status": { "type": "string", "enum": ["enabled", "pending-signer-approval", "disabled"], "description": "Auto top-up lifecycle, derived from the topup signer registration: `pending-signer-approval` until approved, then `enabled`; `disabled` once the signer is removed." }, "maxAmount": { "type": "string", "pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$", "description": "Maximum amount the cardholder can spend within the interval, as a non-negative decimal string in whole token units (e.g. \"100\" for 100 USDC, \"10.50\" for 10.50 USDC). Downstream code converts to the token's smallest unit before encoding on-chain; precision beyond the token's decimals is truncated." }, "currency": { "type": "string", "description": "Settlement currency. Only `usdc` is supported today.", "enum": ["usdc"] }, "interval": { "type": "string", "enum": ["daily"], "description": "The rolling window over which the spending limit resets." }, "topupSigner": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Status of the signer registration transaction." }, "locator": { "type": "string", "description": "Locator of the delegated topup signer on the wallet." }, "transaction": { "anyOf": [ { "type": "object", "properties": { "chainType": { "type": "string", "enum": [ "evm", "solana", "aptos", "sui", "stellar" ], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "calls": { "minItems": 1, "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" }, "value": { "default": "0", "description": "The amount of native token to send in wei", "type": "string" } }, "required": [ "address", "functionName", "abi", "args" ], "title": "EVM contract call transaction parameters", "description": "Parameters for a transaction to execute a contract function" }, { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "value": { "type": "string", "description": "The amount of native token to send in wei" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": [ "to", "value", "data" ], "title": "EVM direct calldata transaction parameters", "description": "Parameters for a transaction to send a direct calldata transaction" }, { "type": "object", "properties": { "transaction": { "description": "Serialized EVM transaction" } }, "required": [ "transaction" ], "title": "EVM serialized transaction parameters", "description": "Parameters for a transaction to send a serialized EVM transaction" } ], "description": "Transaction data to execute" }, "description": "Array of transaction calls to execute" }, "chain": { "description": "The chain where the signer will be registered" }, "signer": { "description": "The full signer object who will submit this transaction", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ] } }, "required": ["calls", "chain"] }, "onChain": { "type": "object", "properties": { "userOperation": { "type": "object", "properties": { "sender": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "nonce": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "verificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "preVerificationGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxPriorityFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymaster": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterVerificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterPostOpGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "signature": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factory": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factoryData": { "type": "string", "description": "WebAuthn authenticator data as hex string" } }, "required": [ "sender", "nonce", "callData", "callGasLimit", "verificationGasLimit", "preVerificationGas", "maxFeePerGas", "maxPriorityFeePerGas", "signature" ] }, "userOperationHash": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "proxiedTxId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": [ "userOperation", "userOperationHash" ], "description": "EVM smart wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": [ "signer", "message" ] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": [ "build_failed" ] }, { "type": "string", "enum": [ "failed_to_land_on_chain" ] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": [ "execution_reverted" ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": [ "contract_call" ] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": [ "type", "reason" ], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": [ "recipient", "recipientAddress" ], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": [ "user-native", "user-fungible", "project" ] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "pending", "settled", "failed" ] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "EVM Smart Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": [ "evm", "solana", "aptos", "sui", "stellar" ], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "call": { "anyOf": [ { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"], "additionalProperties": false }, { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" } }, "required": [ "address", "functionName", "abi", "args" ], "additionalProperties": false } ], "description": "The transaction call to execute" }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "The chain on which the signature will be submitted" } }, "required": ["call", "chain"], "description": "EVM MPC wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "call": { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"] }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["call"], "description": "EVM MPC wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": [ "signer", "message" ] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": [ "build_failed" ] }, { "type": "string", "enum": [ "failed_to_land_on_chain" ] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": [ "execution_reverted" ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": [ "contract_call" ] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": [ "type", "reason" ], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": [ "recipient", "recipientAddress" ], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": [ "user-native", "user-fungible", "project" ] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "pending", "settled", "failed" ] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "EVM MPC Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": [ "evm", "solana", "aptos", "sui", "stellar" ], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction" }, "requiredSigners": { "description": "Optional array of additional full signer objects required for the transaction", "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" } }, "signer": { "description": "The full signer object who will submit this transaction. Defaults to the admin signer.", "anyOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" } ] }, "feeConfig": { "anyOf": [ { "type": "object", "properties": { "feePayer": { "type": "string", "description": "The address that will pay for the transaction" }, "token": { "type": "string", "enum": [ "sol", "usdc", "usdt" ], "description": "The token to use for the fee" }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": [ "feePayer", "token", "amount" ] }, { "type": "object", "properties": { "feePayer": { "type": "string", "enum": [ "crossmint" ] }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": [ "feePayer", "amount" ] } ] } }, "required": ["transaction", "feeConfig"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": [ "signer", "message" ] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": [ "build_failed" ] }, { "type": "string", "enum": [ "failed_to_land_on_chain" ] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": [ "execution_reverted" ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": [ "contract_call" ] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": [ "type", "reason" ], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": [ "recipient", "recipientAddress" ], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": [ "user-native", "user-fungible", "project" ] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "pending", "settled", "failed" ] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "Solana Smart Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": [ "evm", "solana", "aptos", "sui", "stellar" ], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction" }, "requiredSigners": { "description": "Optional array of additional full signer objects required for the transaction", "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" } } }, "required": ["transaction"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": [ "signer", "message" ] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": [ "build_failed" ] }, { "type": "string", "enum": [ "failed_to_land_on_chain" ] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": [ "execution_reverted" ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": [ "contract_call" ] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": [ "type", "reason" ], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": [ "recipient", "recipientAddress" ], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": [ "user-native", "user-fungible", "project" ] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "pending", "settled", "failed" ] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "Solana MPC Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": [ "evm", "solana", "aptos", "sui", "stellar" ], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": [ "contract-call" ] }, "contractId": { "type": "string", "description": "The recipient address for this transaction call", "example": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J" }, "method": { "type": "string", "description": "The name of the function to call" }, "memo": { "description": "The memo for the transaction", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "text" ] }, "value": { "type": "string", "maxLength": 28 } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "id" ] }, "value": { "type": "string" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "hash" ] }, "value": { "type": "string" } }, "required": [ "type", "value" ] } ], "example": { "type": "text", "value": "Hello, world!" } }, "args": { "type": "object", "additionalProperties": true, "description": "The arguments to pass to the function" } }, "required": [ "type", "contractId", "method", "args" ], "title": "Stellar contract call transaction parameters", "description": "Parameters for a transaction to execute a smart contract function", "example": { "type": "contract-call", "contractId": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "method": "transfer", "args": { "to": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "from": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "amount": "1000000000000000000" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": [ "upgrade-wallet" ] } }, "required": ["type"], "title": "Stellar upgrade wallet transaction", "description": "Upgrades the wallet's on-chain contract to a new version. The wallet will be locked until a migrate-wallet transaction completes the upgrade.", "example": { "type": "upgrade-wallet" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": [ "migrate-wallet" ] } }, "required": ["type"], "title": "Stellar migrate wallet transaction", "description": "Completes a pending wallet upgrade by migrating on-chain signer data to the new contract version. Must be called after upgrade-wallet.", "example": { "type": "migrate-wallet" } } ], "description": "Stellar transaction to execute" }, "signer": { "description": "The locator for the signer who will submit this transaction. Defaults to the admin signer.", "type": "string", "title": "Signer Locator", "example": "external-wallet:0x1234567890123456789012345678901234567890" } }, "required": ["transaction"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "object", "properties": { "method": { "type": "string" }, "tx": { "type": "string" } }, "required": ["method", "tx"], "title": "Stellar on-chain transaction", "description": "The Stellar Transaction Envelope" }, "txId": { "description": "The transaction hash", "type": "string" }, "ledger": { "description": "The ledger number where the transaction was included", "type": "number" }, "expiration": { "type": "number", "description": "The expiration of the transaction" }, "result": { "description": "The Transaction Result in XDR format" }, "explorerLink": { "description": "Optional link to view the transaction in an explorer", "type": "string" } }, "required": ["transaction", "expiration"], "title": "Stellar on-chain data" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": [ "signer", "message" ] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": [ "build_failed" ] }, { "type": "string", "enum": [ "failed_to_land_on_chain" ] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": [ "execution_reverted" ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": [ "contract_call" ] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": [ "type", "reason" ], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": [ "recipient", "recipientAddress" ], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": [ "user-native", "user-fungible", "project" ] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "pending", "settled", "failed" ] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "Stellar Smart Wallet" } ], "description": "The signer registration transaction the wallet admin must sign and submit to add (on create) or revoke (on delete) the card's delegated topup signer on-chain." } }, "required": ["status", "locator", "transaction"], "description": "The delegated topup signer plus the registration transaction the admin must sign." } }, "required": ["status", "maxAmount", "currency", "interval", "topupSigner"], "description": "Auto top-up configuration; defines the on-chain spend scope of the topup signer." }, "collateralAddress": { "type": "string", "description": "On-chain address where collateral is held by the provider." } }, "required": ["type", "cardId", "userId", "autoTopupConfig", "collateralAddress"], "description": "Provider-specific card details." }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "updatedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": ["id", "provider", "createdAt", "updatedAt"], "title": "Card", "description": "A registered card with its auto top-up configuration and signer-registration transaction." }, "description": "Cards registered on the wallet." } }, "required": ["cards"], "title": "Card List" }, "CardV2025ResponseDTO": { "type": "object", "properties": { "id": { "type": "string", "description": "Crossmint-assigned card identifier (UUID), distinct from the provider's cardId." }, "provider": { "type": "object", "properties": { "type": { "type": "string", "description": "Card provider.", "enum": ["rain"] }, "cardId": { "type": "string", "description": "The provider's identifier for the card (the cardId supplied at creation)." }, "userId": { "type": "string", "description": "Provider-side user identifier the card is registered against." }, "autoTopupConfig": { "type": "object", "properties": { "status": { "type": "string", "enum": ["enabled", "pending-signer-approval", "disabled"], "description": "Auto top-up lifecycle, derived from the topup signer registration: `pending-signer-approval` until approved, then `enabled`; `disabled` once the signer is removed." }, "maxAmount": { "type": "string", "pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$", "description": "Maximum amount the cardholder can spend within the interval, as a non-negative decimal string in whole token units (e.g. \"100\" for 100 USDC, \"10.50\" for 10.50 USDC). Downstream code converts to the token's smallest unit before encoding on-chain; precision beyond the token's decimals is truncated." }, "currency": { "type": "string", "description": "Settlement currency. Only `usdc` is supported today.", "enum": ["usdc"] }, "interval": { "type": "string", "enum": ["daily"], "description": "The rolling window over which the spending limit resets." }, "topupSigner": { "type": "object", "properties": { "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Status of the signer registration transaction." }, "locator": { "type": "string", "description": "Locator of the delegated topup signer on the wallet." }, "transaction": { "anyOf": [ { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "calls": { "minItems": 1, "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" }, "value": { "default": "0", "description": "The amount of native token to send in wei", "type": "string" } }, "required": [ "address", "functionName", "abi", "args" ], "title": "EVM contract call transaction parameters", "description": "Parameters for a transaction to execute a contract function" }, { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "value": { "type": "string", "description": "The amount of native token to send in wei" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "value", "data"], "title": "EVM direct calldata transaction parameters", "description": "Parameters for a transaction to send a direct calldata transaction" }, { "type": "object", "properties": { "transaction": { "description": "Serialized EVM transaction" } }, "required": ["transaction"], "title": "EVM serialized transaction parameters", "description": "Parameters for a transaction to send a serialized EVM transaction" } ], "description": "Transaction data to execute" }, "description": "Array of transaction calls to execute" }, "chain": { "description": "The chain where the signer will be registered" }, "signer": { "description": "The full signer object who will submit this transaction", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ] } }, "required": ["calls", "chain"] }, "onChain": { "type": "object", "properties": { "userOperation": { "type": "object", "properties": { "sender": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "nonce": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "verificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "preVerificationGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxPriorityFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymaster": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterVerificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterPostOpGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "signature": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factory": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factoryData": { "type": "string", "description": "WebAuthn authenticator data as hex string" } }, "required": [ "sender", "nonce", "callData", "callGasLimit", "verificationGasLimit", "preVerificationGas", "maxFeePerGas", "maxPriorityFeePerGas", "signature" ] }, "userOperationHash": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "proxiedTxId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["userOperation", "userOperationHash"], "description": "EVM smart wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": [ "failed_to_land_on_chain" ] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": [ "contract_call" ] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": [ "user-native", "user-fungible", "project" ] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "EVM Smart Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "call": { "anyOf": [ { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"], "additionalProperties": false }, { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" } }, "required": [ "address", "functionName", "abi", "args" ], "additionalProperties": false } ], "description": "The transaction call to execute" }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "The chain on which the signature will be submitted" } }, "required": ["call", "chain"], "description": "EVM MPC wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "call": { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"] }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["call"], "description": "EVM MPC wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": [ "failed_to_land_on_chain" ] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": [ "contract_call" ] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": [ "user-native", "user-fungible", "project" ] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "EVM MPC Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction" }, "requiredSigners": { "description": "Optional array of additional full signer objects required for the transaction", "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" } }, "signer": { "description": "The full signer object who will submit this transaction. Defaults to the admin signer.", "anyOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" } ] }, "feeConfig": { "anyOf": [ { "type": "object", "properties": { "feePayer": { "type": "string", "description": "The address that will pay for the transaction" }, "token": { "type": "string", "enum": ["sol", "usdc", "usdt"], "description": "The token to use for the fee" }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": [ "feePayer", "token", "amount" ] }, { "type": "object", "properties": { "feePayer": { "type": "string", "enum": ["crossmint"] }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": ["feePayer", "amount"] } ] } }, "required": ["transaction", "feeConfig"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": [ "failed_to_land_on_chain" ] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": [ "contract_call" ] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": [ "user-native", "user-fungible", "project" ] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "Solana Smart Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction" }, "requiredSigners": { "description": "Optional array of additional full signer objects required for the transaction", "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" } } }, "required": ["transaction"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": [ "failed_to_land_on_chain" ] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": [ "contract_call" ] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": [ "user-native", "user-fungible", "project" ] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "Solana MPC Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["contract-call"] }, "contractId": { "type": "string", "description": "The recipient address for this transaction call", "example": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J" }, "method": { "type": "string", "description": "The name of the function to call" }, "memo": { "description": "The memo for the transaction", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["text"] }, "value": { "type": "string", "maxLength": 28 } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["id"] }, "value": { "type": "string" } }, "required": [ "type", "value" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["hash"] }, "value": { "type": "string" } }, "required": [ "type", "value" ] } ], "example": { "type": "text", "value": "Hello, world!" } }, "args": { "type": "object", "additionalProperties": true, "description": "The arguments to pass to the function" } }, "required": [ "type", "contractId", "method", "args" ], "title": "Stellar contract call transaction parameters", "description": "Parameters for a transaction to execute a smart contract function", "example": { "type": "contract-call", "contractId": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "method": "transfer", "args": { "to": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "from": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "amount": "1000000000000000000" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["upgrade-wallet"] } }, "required": ["type"], "title": "Stellar upgrade wallet transaction", "description": "Upgrades the wallet's on-chain contract to a new version. The wallet will be locked until a migrate-wallet transaction completes the upgrade.", "example": { "type": "upgrade-wallet" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["migrate-wallet"] } }, "required": ["type"], "title": "Stellar migrate wallet transaction", "description": "Completes a pending wallet upgrade by migrating on-chain signer data to the new contract version. Must be called after upgrade-wallet.", "example": { "type": "migrate-wallet" } } ], "description": "Stellar transaction to execute" }, "signer": { "description": "The locator for the signer who will submit this transaction. Defaults to the admin signer.", "type": "string", "title": "Signer Locator", "example": "external-wallet:0x1234567890123456789012345678901234567890" } }, "required": ["transaction"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "object", "properties": { "method": { "type": "string" }, "tx": { "type": "string" } }, "required": ["method", "tx"], "title": "Stellar on-chain transaction", "description": "The Stellar Transaction Envelope" }, "txId": { "description": "The transaction hash", "type": "string" }, "ledger": { "description": "The ledger number where the transaction was included", "type": "number" }, "expiration": { "type": "number", "description": "The expiration of the transaction" }, "result": { "description": "The Transaction Result in XDR format" }, "explorerLink": { "description": "Optional link to view the transaction in an explorer", "type": "string" } }, "required": ["transaction", "expiration"], "title": "Stellar on-chain data" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": [ "failed_to_land_on_chain" ] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": [ "contract_call" ] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": [ "user-native", "user-fungible", "project" ] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "Stellar Smart Wallet" } ], "description": "The signer registration transaction the wallet admin must sign and submit to add (on create) or revoke (on delete) the card's delegated topup signer on-chain." } }, "required": ["status", "locator", "transaction"], "description": "The delegated topup signer plus the registration transaction the admin must sign." } }, "required": ["status", "maxAmount", "currency", "interval", "topupSigner"], "description": "Auto top-up configuration; defines the on-chain spend scope of the topup signer." }, "collateralAddress": { "type": "string", "description": "On-chain address where collateral is held by the provider." } }, "description": "Provider-specific card details." }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "updatedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": ["id", "provider", "createdAt", "updatedAt"], "title": "Card" }, "CreateCardInputDTO": { "type": "object", "properties": { "provider": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "The card provider issuing this card. Must match the provider configured for the project.", "enum": ["rain"] }, "cardId": { "type": "string", "description": "The provider's identifier for the card — the id you receive from the provider when creating the card on their side. Acts as the natural idempotency key: re-posting the same cardId with identical configuration returns the existing card; a diverging configuration returns 409." }, "userId": { "type": "string", "description": "The provider-side user identifier the card is registered against. For Rain, the Rain user id." }, "autoTopupConfig": { "type": "object", "properties": { "maxAmount": { "type": "string", "pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?$", "description": "Maximum amount the cardholder can spend within the interval, as a non-negative decimal string in whole token units (e.g. \"100\" for 100 USDC, \"10.50\" for 10.50 USDC). Downstream code converts to the token's smallest unit before encoding on-chain; precision beyond the token's decimals is truncated." }, "currency": { "default": "usdc", "description": "Settlement currency for the spending limit. Only `usdc` is supported today.", "type": "string", "enum": ["usdc"] }, "interval": { "type": "string", "enum": ["daily"], "description": "The rolling window over which the spending limit resets." } }, "required": ["maxAmount", "interval"], "title": "Auto Top-up Config", "description": "Spending cap for the card, enforced on-chain via the wallet's delegated topup signer scope." } }, "required": ["type", "cardId", "userId", "autoTopupConfig"] } ], "description": "Provider-specific card configuration." } }, "required": ["provider"], "title": "Create Card Input" }, "CreateOrderInputDTO": { "anyOf": [ { "type": "object", "properties": { "recipient": { "anyOf": [ { "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,}$" }, "physicalAddress": { "description": "International mailing address using ISO 3166-1 alpha-2 country codes", "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "line1": { "type": "string", "minLength": 1, "maxLength": 200 }, "line2": { "default": "", "type": "string", "maxLength": 60 }, "city": { "type": "string", "minLength": 1, "maxLength": 50 }, "state": { "description": "Deprecated, use stateOrRegion instead", "type": "string", "maxLength": 50 }, "stateOrRegion": { "type": "string", "maxLength": 50 }, "postalCode": { "type": "string", "minLength": 1, "maxLength": 20 }, "country": { "type": "string", "minLength": 2, "maxLength": 2 } }, "required": ["name", "line1", "city", "postalCode", "country"] } }, "required": ["email"], "additionalProperties": false }, { "type": "object", "properties": { "walletAddress": { "type": "string" }, "physicalAddress": { "description": "International mailing address using ISO 3166-1 alpha-2 country codes", "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "line1": { "type": "string", "minLength": 1, "maxLength": 200 }, "line2": { "default": "", "type": "string", "maxLength": 60 }, "city": { "type": "string", "minLength": 1, "maxLength": 50 }, "state": { "description": "Deprecated, use stateOrRegion instead", "type": "string", "maxLength": 50 }, "stateOrRegion": { "type": "string", "maxLength": 50 }, "postalCode": { "type": "string", "minLength": 1, "maxLength": 20 }, "country": { "type": "string", "minLength": 2, "maxLength": 2 } }, "required": ["name", "line1", "city", "postalCode", "country"] } }, "required": ["walletAddress"], "additionalProperties": false }, { "type": "object", "properties": { "paymentMethodId": { "type": "string" }, "rail": { "type": "string", "enum": [ "rtp", "fednow", "ach-same-day", "ach-us", "wire", "sepa-instant", "sepa", "spei", "ach-co" ] } }, "required": ["paymentMethodId"], "additionalProperties": false } ], "description": "Recipient of the items being purchased. You can specify a wallet address, email, or payment method id, either explicitly or using a 'locator'. If you pass an email, Crossmint will create a custodial wallet address for the user on the fly, that they can later log in to. If no recipient is passed, an order will be created with the status 'missing-recipient', until you pass one." }, "locale": { "default": "en-US", "type": "string", "enum": [ "en-US", "es-ES", "fr-FR", "it-IT", "ko-KR", "pt-PT", "ja-JP", "zh-CN", "zh-TW", "de-DE", "ru-RU", "tr-TR", "uk-UA", "th-TH", "vi-VN", "Klingon" ], "description": "Locale for the checkout, in IETF BCP 47. It impacts the email receipt language. Ensure your UI is set to the same language as specified here. Throws an error if passed an invalid language." }, "payment": { "oneOf": [ { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["solana"] }, "currency": { "type": "string" }, "payerAddress": { "description": "A Solana public key.", "type": "string", "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["arbitrum-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["arc-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["avalanche-fuji"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["curtis"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["base-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["bsc-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["chiliz-spicy-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["ethereum-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["hypersonic-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["mantle-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["optimism-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["polygon-amoy"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["scroll-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["sei-atlantic-2-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["shape-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["skale-nebula-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["space-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["story-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["verify-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["zora-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["abstract-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["flow-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["tempo-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["robinhood-chain-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["celo-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["ethereum"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["polygon"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["bsc"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["optimism"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["arbitrum"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["base"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["zora"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["arbitrumnova"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["apechain"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["mantle"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["skale-nebula"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["sei-pacific-1"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["chiliz"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["avalanche"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["shape"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["scroll"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["space"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["story"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["abstract"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["flow"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["tempo"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["robinhood-chain"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["celo"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["sui"] }, "currency": { "type": "string" }, "payerAddress": { "description": "A Sui wallet address.", "type": "string", "pattern": "^0x[a-fA-F0-9]{64}$" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["stripe-payment-element"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["checkoutcom-flow"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["card-token"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["basis-theory"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["card"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["wirex-prefunded"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["bank-transfer"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] } ] }, "metadata": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/CreateOrderInputDTO__schema0" } }, "state": { "type": "string" }, "lineItems": {} }, "required": ["payment", "lineItems"] }, { "type": "object", "properties": { "recipient": { "anyOf": [ { "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,}$" }, "physicalAddress": { "description": "International mailing address using ISO 3166-1 alpha-2 country codes", "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "line1": { "type": "string", "minLength": 1, "maxLength": 200 }, "line2": { "default": "", "type": "string", "maxLength": 60 }, "city": { "type": "string", "minLength": 1, "maxLength": 50 }, "state": { "description": "Deprecated, use stateOrRegion instead", "type": "string", "maxLength": 50 }, "stateOrRegion": { "type": "string", "maxLength": 50 }, "postalCode": { "type": "string", "minLength": 1, "maxLength": 20 }, "country": { "type": "string", "minLength": 2, "maxLength": 2 } }, "required": ["name", "line1", "city", "postalCode", "country"] } }, "required": ["email"], "additionalProperties": false }, { "type": "object", "properties": { "walletAddress": { "type": "string" }, "physicalAddress": { "description": "International mailing address using ISO 3166-1 alpha-2 country codes", "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "line1": { "type": "string", "minLength": 1, "maxLength": 200 }, "line2": { "default": "", "type": "string", "maxLength": 60 }, "city": { "type": "string", "minLength": 1, "maxLength": 50 }, "state": { "description": "Deprecated, use stateOrRegion instead", "type": "string", "maxLength": 50 }, "stateOrRegion": { "type": "string", "maxLength": 50 }, "postalCode": { "type": "string", "minLength": 1, "maxLength": 20 }, "country": { "type": "string", "minLength": 2, "maxLength": 2 } }, "required": ["name", "line1", "city", "postalCode", "country"] } }, "required": ["walletAddress"], "additionalProperties": false }, { "type": "object", "properties": { "paymentMethodId": { "type": "string" }, "rail": { "type": "string", "enum": [ "rtp", "fednow", "ach-same-day", "ach-us", "wire", "sepa-instant", "sepa", "spei", "ach-co" ] } }, "required": ["paymentMethodId"], "additionalProperties": false } ], "description": "Recipient of the items being purchased. You can specify a wallet address, email, or payment method id, either explicitly or using a 'locator'. If you pass an email, Crossmint will create a custodial wallet address for the user on the fly, that they can later log in to. If no recipient is passed, an order will be created with the status 'missing-recipient', until you pass one." }, "locale": { "default": "en-US", "type": "string", "enum": [ "en-US", "es-ES", "fr-FR", "it-IT", "ko-KR", "pt-PT", "ja-JP", "zh-CN", "zh-TW", "de-DE", "ru-RU", "tr-TR", "uk-UA", "th-TH", "vi-VN", "Klingon" ], "description": "Locale for the checkout, in IETF BCP 47. It impacts the email receipt language. Ensure your UI is set to the same language as specified here. Throws an error if passed an invalid language." }, "payment": { "oneOf": [ { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["solana"] }, "currency": { "type": "string" }, "payerAddress": { "description": "A Solana public key.", "type": "string", "pattern": "^[1-9A-HJ-NP-Za-km-z]{32,44}$" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["arbitrum-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["arc-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["avalanche-fuji"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["curtis"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["base-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["bsc-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["chiliz-spicy-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["ethereum-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["hypersonic-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["mantle-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["optimism-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["polygon-amoy"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["scroll-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["sei-atlantic-2-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["shape-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["skale-nebula-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["space-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["story-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["verify-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["zora-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["abstract-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["flow-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["tempo-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["robinhood-chain-testnet"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["celo-sepolia"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["ethereum"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["polygon"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["bsc"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["optimism"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["arbitrum"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["base"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["zora"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["arbitrumnova"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["apechain"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["mantle"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["skale-nebula"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["sei-pacific-1"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["chiliz"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["avalanche"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["shape"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["scroll"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["space"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["story"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["abstract"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["flow"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["tempo"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["robinhood-chain"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["celo"] }, "currency": { "type": "string" }, "payerAddress": { "description": "An EVM wallet address.", "type": "string" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["sui"] }, "currency": { "type": "string" }, "payerAddress": { "description": "A Sui wallet address.", "type": "string", "pattern": "^0x[a-fA-F0-9]{64}$" } }, "required": ["method", "currency"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["stripe-payment-element"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["checkoutcom-flow"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["card-token"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["basis-theory"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["card"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["wirex-prefunded"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] }, { "type": "object", "properties": { "receiptEmail": { "description": "Email that the receipt will be sent to.", "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,}$" }, "method": { "type": "string", "enum": ["bank-transfer"] }, "currency": { "type": "string", "enum": [ "usd", "eur", "aud", "gbp", "jpy", "sgd", "hkd", "krw", "inr", "vnd", "cop", "mxn" ] } }, "required": ["method"] } ] }, "metadata": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/CreateOrderInputDTO__schema0" } }, "state": { "type": "string" }, "externalOrder": {} }, "required": ["payment", "externalOrder"] } ] }, "CreateOrderInputDTO__schema0": { "anyOf": [ { "anyOf": [ { "type": "string", "nullable": true }, { "type": "number", "nullable": true }, { "type": "boolean", "nullable": true } ] }, { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/CreateOrderInputDTO__schema0" } }, { "type": "array", "items": { "$ref": "#/components/schemas/CreateOrderInputDTO__schema0" } } ] }, "CreateSignatureV2025DTO": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["message"] }, "params": { "type": "object", "properties": { "message": { "type": "string", "description": "The message in plain text to sign" }, "signer": { "description": "The locator for the signer who will submit this signature. Defaults to the wallet's admin signer.", "type": "string", "title": "Signer Locator", "example": "external-wallet:0x1234567890123456789012345678901234567890" }, "chain": { "description": "The chain on which the signature will be submitted. Required for EVM wallets, optional for others.", "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ] } }, "required": ["message"], "description": "Parameters for a message signature" } }, "required": ["type", "params"], "title": "Message Signature", "description": "Parameters for a message signature" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["typed-data"] }, "params": { "type": "object", "properties": { "typedData": { "type": "object", "properties": { "domain": { "type": "object", "properties": { "name": { "type": "string" }, "version": { "type": "string" }, "chainId": { "type": "number" }, "verifyingContract": { "type": "string", "description": "The recipient address for this transaction call" }, "salt": { "type": "string", "description": "WebAuthn authenticator data as hex string" } }, "required": ["name", "version", "chainId", "verifyingContract"] }, "types": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string" } }, "required": ["name", "type"] } } }, "primaryType": { "type": "string" }, "message": { "type": "object", "additionalProperties": true } }, "required": ["domain", "types", "primaryType", "message"] }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "The chain on which the signature will be submitted" }, "signer": { "description": "The locator for the signer who will approve this signature", "type": "string", "title": "Signer Locator", "example": "external-wallet:0x1234567890123456789012345678901234567890" }, "isSmartWalletSignature": { "description": "Whether the signature corresponds to the smart wallet or to the signer. If true, the signature will be wrapped with ERC6492.", "type": "boolean" } }, "required": ["typedData", "chain"], "description": "Parameters for a typed data signature" } }, "required": ["type", "params"], "title": "Typed Data Signature", "description": "Parameters for a typed data signature" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["auth-entries"] }, "params": { "type": "object", "properties": { "authorizationEntries": { "type": "string", "description": "Base64-encoded XDR array of all authorization entries from the SEP-45 challenge (4-byte BE count prefix + concatenated entry XDR)" }, "signer": { "description": "The locator for the signer who will approve this entry. Defaults to the wallet's admin signer.", "type": "string", "title": "Signer Locator", "example": "external-wallet:0x1234567890123456789012345678901234567890" } }, "required": ["authorizationEntries"], "description": "Parameters for signing Stellar authorization entries (SEP-45)" } }, "required": ["type", "params"], "title": "Auth Entries Signature", "description": "Parameters for signing Stellar authorization entries (SEP-45)" } ], "description": "Input schema for creating a new signature. The parameters vary based on the signature type.", "example": { "type": "message", "params": { "message": "Hello, world!", "signer": "external-wallet:0xB17Ea8d34078424B9d7D126E444d5F2C3CC5c81E", "chain": "ethereum" } } }, "CreateSignerV2025InputDtoClass": { "anyOf": [ { "type": "object", "properties": { "signer": { "anyOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "minLength": 1, "pattern": "^[A-Za-z0-9_-]+$", "description": "Credential ID from the WebAuthn registration response, as unpadded base64url" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "X coordinate of the public key as a decimal string" }, "y": { "type": "string", "description": "Y coordinate of the public key as a decimal string" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] } }, "required": ["type"], "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "title": "API Key Signer", "example": { "type": "api-key" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for device signer type", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "The x coordinate of the p256 public key" }, "y": { "type": "string", "description": "The y coordinate of the p256 public key" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey"], "description": "A device signer that can be used as a delegated signer", "title": "Device Signer", "example": { "type": "device", "publicKey": { "x": "decimal_string_x", "y": "decimal_string_y" }, "name": "my-device" } } ] }, { "type": "string", "title": "Signer Locator", "description": "A signer locator that can be either a of format '' for external wallet type signers or ':'", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q" } ] }, "chain": { "enum": [ "abstract", "apechain", "arbitrum", "arbitrumnova", "avalanche", "base", "bsc", "flow", "mantle", "optimism", "polygon", "scroll", "sei-pacific-1", "shape", "story", "tempo", "zora", "ethereum", "abstract-testnet", "arbitrum-sepolia", "avalanche-fuji", "base-sepolia", "curtis", "ethereum-sepolia", "flow-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "scroll-sepolia", "sei-atlantic-2-testnet", "story-testnet", "zora-sepolia", "arc-testnet", "tempo-testnet" ], "description": "The chain where the signer will be registered" }, "approver": { "description": "The recovery signer that authorizes this operation. Required when the wallet has multiple recovery signers.", "type": "string", "title": "Signer Locator", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q" }, "scopes": { "description": "Optional array of scopes to restrict the signer's capabilities", "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["transfer"] }, "tokenLocator": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } }, "spendingLimit": { "type": "object", "properties": { "amount": { "type": "string" }, "interval": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 } }, "required": ["amount"] } }, "required": ["type", "tokenLocator"], "title": "Transfer", "description": "Scope to transfer tokens with optional spending limits and recipient restrictions", "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "recipients": ["GDUCX62IF76FFIYRNI25LJDS2V43QEZDY4YNF2DJWVIASN5LKX76Q4TW"], "spendingLimit": { "amount": "100", "interval": 86400 } } }, "example": { "type": "transfer", "tokenLocator": "base-sepolia:usdc", "spendingLimit": { "amount": "10", "interval": 86400 } } }, "expiresAt": { "description": "The expiry date of the signer in ISO 8601 format", "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))$" }, "deployImmediately": { "description": "If true, returns a transaction to register the signer in the wallet. If false (default), it generates a signature and the signer will be registered on the following transaction.", "type": "boolean" } }, "required": ["signer", "chain"], "description": "Parameters for creating a EVM delegated signer", "title": "EVM" }, { "type": "object", "properties": { "signer": { "anyOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "minLength": 1, "pattern": "^[A-Za-z0-9_-]+$", "description": "Credential ID from the WebAuthn registration response, as unpadded base64url" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "X coordinate of the public key as a decimal string" }, "y": { "type": "string", "description": "Y coordinate of the public key as a decimal string" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] } }, "required": ["type"], "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "title": "API Key Signer", "example": { "type": "api-key" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for device signer type", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "The x coordinate of the p256 public key" }, "y": { "type": "string", "description": "The y coordinate of the p256 public key" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey"], "description": "A device signer that can be used as a delegated signer", "title": "Device Signer", "example": { "type": "device", "publicKey": { "x": "decimal_string_x", "y": "decimal_string_y" }, "name": "my-device" } } ] }, { "type": "string", "title": "Signer Locator", "description": "A signer locator that can be either a of format '' for external wallet type signers or ':'", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q" } ] }, "approver": { "description": "The recovery signer that authorizes this operation. Required when the wallet has multiple recovery signers.", "type": "string", "title": "Signer Locator", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q" }, "scopes": { "description": "Optional array of scopes to restrict the signer's capabilities", "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["transfer"] }, "tokenLocator": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } }, "spendingLimit": { "type": "object", "properties": { "amount": { "type": "string" }, "interval": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 } }, "required": ["amount"] } }, "required": ["type", "tokenLocator"], "title": "Transfer", "description": "Scope to transfer tokens with optional spending limits and recipient restrictions", "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "recipients": ["GDUCX62IF76FFIYRNI25LJDS2V43QEZDY4YNF2DJWVIASN5LKX76Q4TW"], "spendingLimit": { "amount": "100", "interval": 86400 } } }, "example": { "type": "transfer", "tokenLocator": "solana:sol", "spendingLimit": { "amount": "1" } } }, "expiresAt": { "description": "The expiry date of the signer in ISO 8601 format", "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": ["signer"], "description": "Parameters for creating a Solana delegated signer", "title": "Solana" }, { "type": "object", "properties": { "signer": { "anyOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "minLength": 1, "pattern": "^[A-Za-z0-9_-]+$", "description": "Credential ID from the WebAuthn registration response, as unpadded base64url" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "X coordinate of the public key as a decimal string" }, "y": { "type": "string", "description": "Y coordinate of the public key as a decimal string" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] } }, "required": ["type"], "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "title": "API Key Signer", "example": { "type": "api-key" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for device signer type", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "The x coordinate of the p256 public key" }, "y": { "type": "string", "description": "The y coordinate of the p256 public key" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey"], "description": "A device signer that can be used as a delegated signer", "title": "Device Signer", "example": { "type": "device", "publicKey": { "x": "decimal_string_x", "y": "decimal_string_y" }, "name": "my-device" } } ] }, { "type": "string", "title": "Signer Locator", "description": "A signer locator that can be either a of format '' for external wallet type signers or ':'", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q" } ] }, "approver": { "description": "The recovery signer that authorizes this operation. Required when the wallet has multiple recovery signers.", "type": "string", "title": "Signer Locator", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q" }, "scopes": { "description": "Optional array of scopes to restrict the signer's capabilities", "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["transfer"] }, "tokenLocator": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } }, "spendingLimit": { "type": "object", "properties": { "amount": { "type": "string" }, "interval": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 } }, "required": ["amount"] } }, "required": ["type", "tokenLocator"], "title": "Transfer", "description": "Scope to transfer tokens with optional spending limits and recipient restrictions", "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "recipients": ["GDUCX62IF76FFIYRNI25LJDS2V43QEZDY4YNF2DJWVIASN5LKX76Q4TW"], "spendingLimit": { "amount": "100", "interval": 86400 } } }, "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "spendingLimit": { "amount": "100" } } }, "expiresAt": { "description": "The expiry date of the signer in ISO 8601 format", "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": ["signer"], "description": "Parameters for creating a Stellar delegated signer", "title": "Stellar" } ] }, "CreateTransactionV2025DTOClass": { "anyOf": [ { "type": "object", "properties": { "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction" }, "requiredSigners": { "description": "Optional array of additional signers required for the transaction", "type": "array", "items": { "type": "string", "title": "Signer Locator", "description": "The locator for the signer", "example": "external-wallet:0x1234567890123456789012345678901234567890" } }, "signer": { "type": "string", "title": "Signer Locator", "description": "The locator for the signer", "example": "external-wallet:0x1234567890123456789012345678901234567890" } }, "required": ["transaction"] }, "fees": { "description": "Optional per-transaction fee configuration override. When omitted, the project default is used.", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"], "description": "Override the project-level fee mode for this transaction. When omitted, the project default is used." }, "token": { "description": "The fungible token to use when mode is 'user-fungible'. Defaults to 'USDC' if omitted.", "type": "string", "enum": ["USDC"] } }, "required": ["mode"] } }, "required": ["params"], "title": "Solana Smart Wallet", "description": "Parameters for a transaction from a Solana Smart Wallet" }, { "type": "object", "properties": { "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction" }, "requiredSigners": { "description": "Optional array of additional signers required for the transaction", "type": "array", "items": { "type": "string", "title": "Signer Locator", "description": "The locator for the signer", "example": "external-wallet:0x1234567890123456789012345678901234567890" } } }, "required": ["transaction"] }, "fees": { "description": "Optional per-transaction fee configuration override. When omitted, the project default is used.", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"], "description": "Override the project-level fee mode for this transaction. When omitted, the project default is used." }, "token": { "description": "The fungible token to use when mode is 'user-fungible'. Defaults to 'USDC' if omitted.", "type": "string", "enum": ["USDC"] } }, "required": ["mode"] } }, "required": ["params"], "title": "Solana MPC Wallet", "description": "Parameters for a transaction from a Solana MPC Wallet" }, { "type": "object", "properties": { "params": { "type": "object", "properties": { "calls": { "minItems": 1, "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" }, "value": { "default": "0", "description": "The amount of native token to send in wei", "type": "string" } }, "required": ["address", "functionName", "abi", "args"], "title": "EVM contract call transaction parameters", "description": "Parameters for a transaction to execute a contract function" }, { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "value": { "type": "string", "description": "The amount of native token to send in wei" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "value", "data"], "title": "EVM direct calldata transaction parameters", "description": "Parameters for a transaction to send a direct calldata transaction" }, { "type": "object", "properties": { "transaction": { "description": "Serialized EVM transaction" } }, "required": ["transaction"], "title": "EVM serialized transaction parameters", "description": "Parameters for a transaction to send a serialized EVM transaction" } ], "description": "Transaction data to execute" }, "description": "Array of transaction calls to execute" }, "chain": { "description": "The chain where the signer will be registered" }, "signer": { "description": "The locator for the signer who will submit this transaction", "type": "string", "title": "Signer Locator", "example": "external-wallet:0x1234567890123456789012345678901234567890" } }, "required": ["calls", "chain"] }, "fees": { "description": "Optional per-transaction fee configuration override. When omitted, the project default is used.", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"], "description": "Override the project-level fee mode for this transaction. When omitted, the project default is used." }, "token": { "description": "The fungible token to use when mode is 'user-fungible'. Defaults to 'USDC' if omitted.", "type": "string", "enum": ["USDC"] } }, "required": ["mode"] } }, "required": ["params"], "title": "EVM Smart Wallet", "description": "Parameters for a transaction from an EVM Smart Wallet" }, { "type": "object", "properties": { "params": { "type": "object", "properties": { "call": { "anyOf": [ { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"], "additionalProperties": false }, { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" } }, "required": ["address", "functionName", "abi", "args"], "additionalProperties": false } ], "description": "The transaction call to execute" }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "The chain on which the signature will be submitted" } }, "required": ["call", "chain"], "additionalProperties": false, "title": "EVM MPC wallet", "description": "Parameters for a transaction from an EVM MPC Wallet" }, "fees": { "description": "Optional per-transaction fee configuration override. When omitted, the project default is used.", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"], "description": "Override the project-level fee mode for this transaction. When omitted, the project default is used." }, "token": { "description": "The fungible token to use when mode is 'user-fungible'. Defaults to 'USDC' if omitted.", "type": "string", "enum": ["USDC"] } }, "required": ["mode"] } }, "required": ["params"], "title": "EVM MPC Wallet", "description": "Parameters for a transaction from an EVM MPC Wallet" }, { "type": "object", "properties": { "params": { "type": "object", "properties": { "transaction": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["contract-call"] }, "contractId": { "type": "string", "description": "The recipient address for this transaction call", "example": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J" }, "method": { "type": "string", "description": "The name of the function to call" }, "memo": { "description": "The memo for the transaction", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["text"] }, "value": { "type": "string", "maxLength": 28 } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["id"] }, "value": { "type": "string" } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["hash"] }, "value": { "type": "string" } }, "required": ["type", "value"] } ], "example": { "type": "text", "value": "Hello, world!" } }, "args": { "type": "object", "additionalProperties": true, "description": "The arguments to pass to the function" } }, "required": ["type", "contractId", "method", "args"], "title": "Stellar contract call transaction parameters", "description": "Parameters for a transaction to execute a smart contract function", "example": { "type": "contract-call", "contractId": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "method": "transfer", "args": { "to": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "from": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "amount": "1000000000000000000" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["upgrade-wallet"] } }, "required": ["type"], "title": "Stellar upgrade wallet transaction", "description": "Upgrades the wallet's on-chain contract to a new version. The wallet will be locked until a migrate-wallet transaction completes the upgrade.", "example": { "type": "upgrade-wallet" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["migrate-wallet"] } }, "required": ["type"], "title": "Stellar migrate wallet transaction", "description": "Completes a pending wallet upgrade by migrating on-chain signer data to the new contract version. Must be called after upgrade-wallet.", "example": { "type": "migrate-wallet" } } ], "description": "Stellar transaction to execute" }, "signer": { "description": "The locator for the signer who will submit this transaction. Defaults to the admin signer.", "type": "string", "title": "Signer Locator", "example": "external-wallet:0x1234567890123456789012345678901234567890" } }, "required": ["transaction"], "additionalProperties": false, "title": "Stellar smart wallet", "description": "Parameters for a transaction from a Stellar Smart Wallet" }, "fees": { "description": "Optional per-transaction fee configuration override. When omitted, the project default is used.", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"], "description": "Override the project-level fee mode for this transaction. When omitted, the project default is used." }, "token": { "description": "The fungible token to use when mode is 'user-fungible'. Defaults to 'USDC' if omitted.", "type": "string", "enum": ["USDC"] } }, "required": ["mode"] } }, "required": ["params"], "title": "Stellar Smart Wallet", "description": "Parameters for a transaction from a Stellar Smart Wallet" } ], "description": "Input schema for creating a new transaction. The parameters vary based on the wallet type (EVM vs Solana vs Stellar)." }, "CreateWalletV2025DTOClass": { "anyOf": [ { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm"] }, "type": { "default": "smart", "type": "string", "enum": ["smart"] }, "config": { "type": "object", "properties": { "adminSigner": { "description": "@deprecated Use `recoveryMethods` instead. The admin signer for the wallet. Mutually exclusive with `recoveryMethods`.", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] } }, "required": ["type"], "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "title": "API Key Signer", "example": { "type": "api-key" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for quorum (multisig) signer type", "enum": ["quorum"] }, "threshold": { "default": 1, "description": "The minimum number of member signatures required to approve. Defaults to 1.", "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "signers": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } } ] }, "description": "The member signers that make up the quorum (1-10 members, no duplicates). Nested quorums are not allowed." } }, "required": ["type", "signers"], "description": "A quorum (multisig) signer composed of multiple member signers with an approval threshold", "title": "Quorum Signer" } ] }, "recoveryMethods": { "description": "The recovery configuration (admin signer) for the wallet. Mutually exclusive with `adminSigner`.", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] } }, "required": ["type"], "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "title": "API Key Signer", "example": { "type": "api-key" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for quorum (multisig) signer type", "enum": ["quorum"] }, "threshold": { "default": 1, "description": "The minimum number of member signatures required to approve. Defaults to 1.", "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "signers": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } } ] }, "description": "The member signers that make up the quorum (1-10 members, no duplicates). Nested quorums are not allowed." } }, "required": ["type", "signers"], "description": "A quorum (multisig) signer composed of multiple member signers with an approval threshold", "title": "Quorum Signer" } ] }, "delegatedSigners": { "description": "Optional array of delegated signers to be created for the wallet", "type": "array", "items": { "type": "object", "properties": { "signer": { "anyOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] } }, "required": ["type"], "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "title": "API Key Signer", "example": { "type": "api-key" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for device signer type", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "The y coordinate of the p256 public key" }, "y": { "type": "string", "description": "The y coordinate of the p256 public key" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey"], "description": "A device signer that can be used as a delegated signer", "title": "Device Signer", "example": { "type": "device", "publicKey": { "x": "decimal_string_x", "y": "decimal_string_y" }, "name": "my-device" } } ] }, { "type": "string", "title": "Signer Locator", "description": "The locator for the signer", "example": "external-wallet:0x1234567890123456789012345678901234567890" } ] }, "scopes": { "description": "Optional array of scopes to restrict the signer's capabilities", "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["transfer"] }, "tokenLocator": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } }, "spendingLimit": { "type": "object", "properties": { "amount": { "type": "string" }, "interval": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 } }, "required": ["amount"] } }, "required": ["type", "tokenLocator"], "title": "Transfer", "description": "Scope to transfer tokens with optional spending limits and recipient restrictions", "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "recipients": [ "GDUCX62IF76FFIYRNI25LJDS2V43QEZDY4YNF2DJWVIASN5LKX76Q4TW" ], "spendingLimit": { "amount": "100", "interval": 86400 } } }, "example": { "type": "transfer", "tokenLocator": "base-sepolia:usdc", "spendingLimit": { "amount": "10", "interval": 86400 } } }, "expiresAt": { "description": "The expiry date of the signer in ISO 8601 format", "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))$" }, "deployImmediately": { "description": "If true, returns a transaction to register the signer in the wallet. If false (default), it generates a signature and the signer will be registered on the following transaction.", "type": "boolean" } }, "required": ["signer"] } }, "creationSeed": { "description": "The unique wallet seed. By default, the seed is randomly generated.", "type": "string", "example": "0" } }, "additionalProperties": false }, "owner": { "type": "string" }, "alias": { "description": "The wallet alias", "type": "string", "example": "my-usdc-wallet" } }, "required": ["chainType", "config"], "title": "EVM smart wallet creation input", "description": "EVM smart wallet creation input" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm"] }, "type": { "type": "string", "enum": ["mpc"] }, "config": {}, "owner": { "description": "A user locator can be of the format:\n- `email:`\n- `userId:`\n- `phoneNumber:`\n- `twitter:`\n- `x:`", "type": "string" } }, "required": ["chainType", "type"], "title": "EVM MPC wallet creation input", "description": "EVM MPC wallet creation input" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["solana"] }, "type": { "default": "smart", "type": "string", "enum": ["smart"] }, "config": { "type": "object", "properties": { "adminSigner": { "description": "@deprecated Use `recoveryMethods` instead. The admin signer for the wallet. Mutually exclusive with `recoveryMethods`.", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] } }, "required": ["type"], "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "title": "API Key Signer", "example": { "type": "api-key" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for quorum (multisig) signer type", "enum": ["quorum"] }, "threshold": { "default": 1, "description": "The minimum number of member signatures required to approve. Defaults to 1.", "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "signers": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } } ] }, "description": "The member signers that make up the quorum (1-10 members, no duplicates). Nested quorums are not allowed." } }, "required": ["type", "signers"], "description": "A quorum (multisig) signer composed of multiple member signers with an approval threshold", "title": "Quorum Signer" } ] }, "recoveryMethods": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] } }, "required": ["type"], "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "title": "API Key Signer", "example": { "type": "api-key" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for quorum (multisig) signer type", "enum": ["quorum"] }, "threshold": { "default": 1, "description": "The minimum number of member signatures required to approve. Defaults to 1.", "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "signers": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } } ] }, "description": "The member signers that make up the quorum (1-10 members, no duplicates). Nested quorums are not allowed." } }, "required": ["type", "signers"], "description": "A quorum (multisig) signer composed of multiple member signers with an approval threshold", "title": "Quorum Signer" } ] }, "minItems": 1, "maxItems": 10, "description": "The recovery signers of the wallet: a list of up to 10 recovery signers that can each authorize on their own. Mutually exclusive with `adminSigner`." }, "delegatedSigners": { "description": "Optional array of delegated signers to be created for the wallet", "type": "array", "items": { "type": "object", "properties": { "signer": { "anyOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] } }, "required": ["type"], "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "title": "API Key Signer", "example": { "type": "api-key" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for device signer type", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "The y coordinate of the p256 public key" }, "y": { "type": "string", "description": "The y coordinate of the p256 public key" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey"], "description": "A device signer that can be used as a delegated signer", "title": "Device Signer", "example": { "type": "device", "publicKey": { "x": "decimal_string_x", "y": "decimal_string_y" }, "name": "my-device" } } ] }, { "type": "string", "title": "Signer Locator", "description": "The locator for the signer", "example": "external-wallet:0x1234567890123456789012345678901234567890" } ] }, "scopes": { "description": "Optional array of scopes to restrict the signer's capabilities", "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["transfer"] }, "tokenLocator": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } }, "spendingLimit": { "type": "object", "properties": { "amount": { "type": "string" }, "interval": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 } }, "required": ["amount"] } }, "required": ["type", "tokenLocator"], "title": "Transfer", "description": "Scope to transfer tokens with optional spending limits and recipient restrictions", "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "recipients": [ "GDUCX62IF76FFIYRNI25LJDS2V43QEZDY4YNF2DJWVIASN5LKX76Q4TW" ], "spendingLimit": { "amount": "100", "interval": 86400 } } }, "example": { "type": "transfer", "tokenLocator": "solana:sol", "spendingLimit": { "amount": "1" } } }, "expiresAt": { "description": "The expiry date of the signer in ISO 8601 format", "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": ["signer"], "description": "Parameters for creating a Solana delegated signer", "title": "Solana" } } }, "additionalProperties": false }, "owner": { "type": "string" }, "alias": { "description": "The wallet alias", "type": "string", "example": "my-usdc-wallet" } }, "required": ["chainType", "config"], "title": "Solana smart wallet creation input", "description": "Solana smart wallet creation input" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["solana"] }, "type": { "type": "string", "enum": ["mpc"] }, "config": {}, "owner": { "description": "A user locator can be of the format:\n- `email:`\n- `userId:`\n- `phoneNumber:`\n- `twitter:`\n- `x:`", "type": "string" } }, "required": ["chainType", "type"], "title": "Solana MPC wallet creation input", "description": "Solana MPC wallet creation input" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["aptos"] }, "type": { "default": "mpc", "type": "string", "enum": ["mpc"] }, "config": {}, "owner": { "description": "A user locator can be of the format:\n- `email:`\n- `userId:`\n- `phoneNumber:`\n- `twitter:`\n- `x:`", "type": "string" } }, "required": ["chainType"], "title": "Aptos wallet creation input", "description": "Aptos wallet creation input" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["sui"] }, "type": { "default": "mpc", "type": "string", "enum": ["mpc"] }, "config": {}, "owner": { "description": "A user locator can be of the format:\n- `email:`\n- `userId:`\n- `phoneNumber:`\n- `twitter:`\n- `x:`", "type": "string" } }, "required": ["chainType"], "title": "Sui wallet creation input", "description": "Sui wallet creation input" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["stellar"] }, "type": { "default": "smart", "type": "string", "enum": ["smart"] }, "config": { "type": "object", "properties": { "adminSigner": { "description": "@deprecated Use `recoveryMethods` instead. The admin signer for the wallet. Mutually exclusive with `recoveryMethods`.", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] } }, "required": ["type"], "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "title": "API Key Signer", "example": { "type": "api-key" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for quorum (multisig) signer type", "enum": ["quorum"] }, "threshold": { "default": 1, "description": "The minimum number of member signatures required to approve. Defaults to 1.", "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "signers": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } } ] }, "description": "The member signers that make up the quorum (1-10 members, no duplicates). Nested quorums are not allowed." } }, "required": ["type", "signers"], "description": "A quorum (multisig) signer composed of multiple member signers with an approval threshold", "title": "Quorum Signer" } ] }, "recoveryMethods": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] } }, "required": ["type"], "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "title": "API Key Signer", "example": { "type": "api-key" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for quorum (multisig) signer type", "enum": ["quorum"] }, "threshold": { "default": 1, "description": "The minimum number of member signatures required to approve. Defaults to 1.", "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "signers": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } } ] }, "description": "The member signers that make up the quorum (1-10 members, no duplicates). Nested quorums are not allowed." } }, "required": ["type", "signers"], "description": "A quorum (multisig) signer composed of multiple member signers with an approval threshold", "title": "Quorum Signer" } ] }, "minItems": 1, "maxItems": 10, "description": "The recovery signers of the wallet: a list of up to 10 recovery signers that can each authorize on their own. Mutually exclusive with `adminSigner`." }, "delegatedSigners": { "description": "Optional array of delegated signers to be created for the wallet", "type": "array", "items": { "type": "object", "properties": { "signer": { "anyOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" } }, "required": ["type", "id", "name", "publicKey"], "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] } }, "required": ["type"], "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "title": "API Key Signer", "example": { "type": "api-key" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" } }, "required": ["type", "address"], "description": "An external wallet that can be used to sign transactions", "title": "External Wallet Signer", "example": { "type": "external-wallet", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" } }, "required": ["type", "address"], "description": "A server-managed blockchain signer", "title": "Server Signer", "example": { "type": "server", "address": "0x1234567890123456789012345678901234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" } }, "required": ["type", "email"], "description": "An email-based signer that can be used to sign transactions", "title": "Email Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" } }, "required": ["type", "phone"], "description": "An phone-based signer that can be used to sign transactions", "title": "Phone Signer", "example": { "type": "phone", "phone": "+1234567890" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for device signer type", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "The y coordinate of the p256 public key" }, "y": { "type": "string", "description": "The y coordinate of the p256 public key" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey"], "description": "A device signer that can be used as a delegated signer", "title": "Device Signer", "example": { "type": "device", "publicKey": { "x": "decimal_string_x", "y": "decimal_string_y" }, "name": "my-device" } } ] }, { "type": "string", "title": "Signer Locator", "description": "The locator for the signer", "example": "external-wallet:0x1234567890123456789012345678901234567890" } ] }, "scopes": { "description": "Optional array of scopes to restrict the signer's capabilities", "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["transfer"] }, "tokenLocator": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } }, "spendingLimit": { "type": "object", "properties": { "amount": { "type": "string" }, "interval": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 } }, "required": ["amount"] } }, "required": ["type", "tokenLocator"], "title": "Transfer", "description": "Scope to transfer tokens with optional spending limits and recipient restrictions", "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "recipients": [ "GDUCX62IF76FFIYRNI25LJDS2V43QEZDY4YNF2DJWVIASN5LKX76Q4TW" ], "spendingLimit": { "amount": "100", "interval": 86400 } } }, "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "spendingLimit": { "amount": "100" } } }, "expiresAt": { "description": "The expiry date of the signer in ISO 8601 format", "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": ["signer"], "description": "Parameters for creating a Stellar delegated signer", "title": "Stellar" } }, "plugins": { "default": [], "description": "Optional array of plugins to be used for the wallet", "type": "array", "items": { "type": "string" }, "example": "CCPJPJGL2GJFOYMZUDBINNUADGK2KMGIB6KQAOQAOI4REWAHLBWUHLXQ" } }, "additionalProperties": false }, "owner": { "type": "string" }, "alias": { "description": "The wallet alias", "type": "string", "example": "my-usdc-wallet" } }, "required": ["chainType", "config"], "title": "Stellar wallet creation input", "description": "Stellar wallet creation input" } ] }, "DelegatedSignerV2025DtoClass": { "anyOf": [ { "allOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" }, "validatorContractVersion": { "type": "string", "description": "ERC-7579 webAuthn validator contract version" }, "locator": { "type": "string", "description": "Unique identifier for locating this passkey signer" } }, "required": [ "type", "id", "name", "publicKey", "validatorContractVersion", "locator" ], "description": "Response schema for a registered Passkey signer including validator contract details", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" }, "validatorContractVersion": "0.2.0", "locator": "passkey:cWtP7gmZbd98HbKUuGXx5Q" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string", "description": "The Solana address of the signer" }, { "type": "string" } ], "description": "The blockchain address of the custodial signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access." }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for device signer type", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "The x coordinate of the p256 public key" }, "y": { "type": "string", "description": "The y coordinate of the p256 public key" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "description": "The locator of the signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Configuration for a device signer" } ], "description": "Response schema for a registered signer" }, { "type": "object", "properties": { "scopes": { "description": "Optional array of scopes restricting the signer's capabilities", "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["transfer"] }, "tokenLocator": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } }, "spendingLimit": { "type": "object", "properties": { "amount": { "type": "string" }, "interval": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 } }, "required": ["amount"] } }, "required": ["type", "tokenLocator"], "title": "Transfer", "description": "Scope to transfer tokens with optional spending limits and recipient restrictions", "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "recipients": [ "GDUCX62IF76FFIYRNI25LJDS2V43QEZDY4YNF2DJWVIASN5LKX76Q4TW" ], "spendingLimit": { "amount": "100", "interval": 86400 } } }, "example": { "type": "transfer", "tokenLocator": "solana:sol", "spendingLimit": { "amount": "1" } } }, "expiresAt": { "description": "The expiry date of the signer in ISO 8601 format", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "transaction": { "description": "The transaction for the signer", "type": "object", "properties": { "chainType": { "type": "string", "enum": ["solana"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] }, "walletType": { "type": "string", "enum": ["smart"] } }, "required": ["chainType", "onChain", "id", "status", "createdAt", "walletType"] } } } ], "title": "Solana Delegated Signer Response", "description": "Complete delegated signer response including the signer and authorization transaction" }, { "allOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" }, "validatorContractVersion": { "type": "string", "description": "ERC-7579 webAuthn validator contract version" }, "locator": { "type": "string", "description": "Unique identifier for locating this passkey signer" } }, "required": [ "type", "id", "name", "publicKey", "validatorContractVersion", "locator" ], "description": "Response schema for a registered Passkey signer including validator contract details", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" }, "validatorContractVersion": "0.2.0", "locator": "passkey:cWtP7gmZbd98HbKUuGXx5Q" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string", "description": "The Solana address of the signer" }, { "type": "string" } ], "description": "The blockchain address of the custodial signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access." }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for device signer type", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "The x coordinate of the p256 public key" }, "y": { "type": "string", "description": "The y coordinate of the p256 public key" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "description": "The locator of the signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Configuration for a device signer" } ], "description": "Response schema for a registered signer" }, { "type": "object", "properties": { "scopes": { "description": "Optional array of scopes restricting the signer's capabilities", "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["transfer"] }, "tokenLocator": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } }, "spendingLimit": { "type": "object", "properties": { "amount": { "type": "string" }, "interval": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 } }, "required": ["amount"] } }, "required": ["type", "tokenLocator"], "title": "Transfer", "description": "Scope to transfer tokens with optional spending limits and recipient restrictions", "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "recipients": [ "GDUCX62IF76FFIYRNI25LJDS2V43QEZDY4YNF2DJWVIASN5LKX76Q4TW" ], "spendingLimit": { "amount": "100", "interval": 86400 } } }, "example": { "type": "transfer", "tokenLocator": "base-sepolia:usdc", "spendingLimit": { "amount": "10", "interval": 86400 } } }, "expiresAt": { "description": "The expiry date of the signer in ISO 8601 format", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "chains": { "description": "Authorization for each chain, keyed by chain name. The value is either a signature request (signature flow) or an on-chain registration transaction (deployImmediately flow).", "type": "object", "additionalProperties": { "anyOf": [ { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm"] }, "walletType": { "type": "string", "enum": ["smart"] }, "onChain": { "type": "object", "properties": { "userOperation": { "type": "object", "properties": { "sender": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "nonce": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "verificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "preVerificationGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxPriorityFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymaster": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterVerificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterPostOpGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "signature": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factory": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factoryData": { "type": "string", "description": "WebAuthn authenticator data as hex string" } }, "required": [ "sender", "nonce", "callData", "callGasLimit", "verificationGasLimit", "preVerificationGas", "maxFeePerGas", "maxPriorityFeePerGas", "signature" ] }, "userOperationHash": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "proxiedTxId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["userOperation", "userOperationHash"], "description": "EVM smart wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "onChain", "id", "status", "createdAt" ], "title": "Delegated Signer Registration Transaction", "description": "On-chain transaction registering the signer for this chain, returned when `deployImmediately` is true" }, { "type": "object", "properties": { "status": { "type": "string", "enum": ["success"] } }, "required": ["status"], "title": "Delegated Signer Approved", "description": "Delegated signer that has been approved for this chain" }, { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "awaiting-approval", "failed"] }, "id": { "type": "string", "description": "Unique identifier for the signature" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" } }, "required": ["status", "id"], "title": "Delegated Signer Awaiting Approval", "description": "Delegated signer that is awaiting approval for this chain" } ] } } } } ], "title": "EVM Delegated Signer Response", "description": "Complete delegated signer response including the signer and authorizations for each chain" }, { "allOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" }, "validatorContractVersion": { "type": "string", "description": "ERC-7579 webAuthn validator contract version" }, "locator": { "type": "string", "description": "Unique identifier for locating this passkey signer" } }, "required": [ "type", "id", "name", "publicKey", "validatorContractVersion", "locator" ], "description": "Response schema for a registered Passkey signer including validator contract details", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" }, "validatorContractVersion": "0.2.0", "locator": "passkey:cWtP7gmZbd98HbKUuGXx5Q" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string", "description": "The Solana address of the signer" }, { "type": "string" } ], "description": "The blockchain address of the custodial signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access." }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for device signer type", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "The x coordinate of the p256 public key" }, "y": { "type": "string", "description": "The y coordinate of the p256 public key" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "description": "The locator of the signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Configuration for a device signer" } ], "description": "Response schema for a registered signer" }, { "type": "object", "properties": { "scopes": { "description": "Optional array of scopes restricting the signer's capabilities", "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["transfer"] }, "tokenLocator": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } }, "spendingLimit": { "type": "object", "properties": { "amount": { "type": "string" }, "interval": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 } }, "required": ["amount"] } }, "required": ["type", "tokenLocator"], "title": "Transfer", "description": "Scope to transfer tokens with optional spending limits and recipient restrictions", "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "recipients": [ "GDUCX62IF76FFIYRNI25LJDS2V43QEZDY4YNF2DJWVIASN5LKX76Q4TW" ], "spendingLimit": { "amount": "100", "interval": 86400 } } }, "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "spendingLimit": { "amount": "100" } } }, "expiresAt": { "description": "The expiry date of the signer in ISO 8601 format", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "transaction": { "description": "The transaction for the signer", "type": "object", "properties": { "chainType": { "type": "string", "enum": ["stellar"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "object", "properties": { "method": { "type": "string" }, "tx": { "type": "string" } }, "required": ["method", "tx"], "title": "Stellar on-chain transaction", "description": "The Stellar Transaction Envelope" }, "txId": { "description": "The transaction hash", "type": "string" }, "ledger": { "description": "The ledger number where the transaction was included", "type": "number" }, "expiration": { "type": "number", "description": "The expiration of the transaction" }, "result": { "description": "The Transaction Result in XDR format" }, "explorerLink": { "description": "Optional link to view the transaction in an explorer", "type": "string" } }, "required": ["transaction", "expiration"], "title": "Stellar on-chain data" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] }, "walletType": { "type": "string", "enum": ["smart"] } }, "required": ["chainType", "onChain", "id", "status", "createdAt", "walletType"] } } } ], "title": "Stellar Delegated Signer Response", "description": "Complete delegated signer response including the signer and authorization transaction" } ] }, "DeleteCardV2025ResponseDTO": { "type": "object", "properties": { "pendingTransaction": { "description": "The signer-revocation transaction the wallet admin must sign and submit to complete the card's on-chain removal. Absent only when no on-chain cleanup remains.", "anyOf": [ { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "calls": { "minItems": 1, "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" }, "value": { "default": "0", "description": "The amount of native token to send in wei", "type": "string" } }, "required": ["address", "functionName", "abi", "args"], "title": "EVM contract call transaction parameters", "description": "Parameters for a transaction to execute a contract function" }, { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "value": { "type": "string", "description": "The amount of native token to send in wei" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "value", "data"], "title": "EVM direct calldata transaction parameters", "description": "Parameters for a transaction to send a direct calldata transaction" }, { "type": "object", "properties": { "transaction": { "description": "Serialized EVM transaction" } }, "required": ["transaction"], "title": "EVM serialized transaction parameters", "description": "Parameters for a transaction to send a serialized EVM transaction" } ], "description": "Transaction data to execute" }, "description": "Array of transaction calls to execute" }, "chain": { "description": "The chain where the signer will be registered" }, "signer": { "description": "The full signer object who will submit this transaction", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ] } }, "required": ["calls", "chain"] }, "onChain": { "type": "object", "properties": { "userOperation": { "type": "object", "properties": { "sender": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "nonce": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "verificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "preVerificationGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxPriorityFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymaster": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterVerificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterPostOpGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "signature": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factory": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factoryData": { "type": "string", "description": "WebAuthn authenticator data as hex string" } }, "required": [ "sender", "nonce", "callData", "callGasLimit", "verificationGasLimit", "preVerificationGas", "maxFeePerGas", "maxPriorityFeePerGas", "signature" ] }, "userOperationHash": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "proxiedTxId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["userOperation", "userOperationHash"], "description": "EVM smart wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "EVM Smart Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "call": { "anyOf": [ { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"], "additionalProperties": false }, { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" } }, "required": ["address", "functionName", "abi", "args"], "additionalProperties": false } ], "description": "The transaction call to execute" }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "The chain on which the signature will be submitted" } }, "required": ["call", "chain"], "description": "EVM MPC wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "call": { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"] }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["call"], "description": "EVM MPC wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "EVM MPC Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction" }, "requiredSigners": { "description": "Optional array of additional full signer objects required for the transaction", "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" } }, "signer": { "description": "The full signer object who will submit this transaction. Defaults to the admin signer.", "anyOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" } ] }, "feeConfig": { "anyOf": [ { "type": "object", "properties": { "feePayer": { "type": "string", "description": "The address that will pay for the transaction" }, "token": { "type": "string", "enum": ["sol", "usdc", "usdt"], "description": "The token to use for the fee" }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": ["feePayer", "token", "amount"] }, { "type": "object", "properties": { "feePayer": { "type": "string", "enum": ["crossmint"] }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": ["feePayer", "amount"] } ] } }, "required": ["transaction", "feeConfig"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "Solana Smart Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction" }, "requiredSigners": { "description": "Optional array of additional full signer objects required for the transaction", "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" } } }, "required": ["transaction"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "Solana MPC Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["contract-call"] }, "contractId": { "type": "string", "description": "The recipient address for this transaction call", "example": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J" }, "method": { "type": "string", "description": "The name of the function to call" }, "memo": { "description": "The memo for the transaction", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["text"] }, "value": { "type": "string", "maxLength": 28 } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["id"] }, "value": { "type": "string" } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["hash"] }, "value": { "type": "string" } }, "required": ["type", "value"] } ], "example": { "type": "text", "value": "Hello, world!" } }, "args": { "type": "object", "additionalProperties": true, "description": "The arguments to pass to the function" } }, "required": ["type", "contractId", "method", "args"], "title": "Stellar contract call transaction parameters", "description": "Parameters for a transaction to execute a smart contract function", "example": { "type": "contract-call", "contractId": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "method": "transfer", "args": { "to": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "from": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "amount": "1000000000000000000" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["upgrade-wallet"] } }, "required": ["type"], "title": "Stellar upgrade wallet transaction", "description": "Upgrades the wallet's on-chain contract to a new version. The wallet will be locked until a migrate-wallet transaction completes the upgrade.", "example": { "type": "upgrade-wallet" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["migrate-wallet"] } }, "required": ["type"], "title": "Stellar migrate wallet transaction", "description": "Completes a pending wallet upgrade by migrating on-chain signer data to the new contract version. Must be called after upgrade-wallet.", "example": { "type": "migrate-wallet" } } ], "description": "Stellar transaction to execute" }, "signer": { "description": "The locator for the signer who will submit this transaction. Defaults to the admin signer.", "type": "string", "title": "Signer Locator", "example": "external-wallet:0x1234567890123456789012345678901234567890" } }, "required": ["transaction"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "object", "properties": { "method": { "type": "string" }, "tx": { "type": "string" } }, "required": ["method", "tx"], "title": "Stellar on-chain transaction", "description": "The Stellar Transaction Envelope" }, "txId": { "description": "The transaction hash", "type": "string" }, "ledger": { "description": "The ledger number where the transaction was included", "type": "number" }, "expiration": { "type": "number", "description": "The expiration of the transaction" }, "result": { "description": "The Transaction Result in XDR format" }, "explorerLink": { "description": "Optional link to view the transaction in an explorer", "type": "string" } }, "required": ["transaction", "expiration"], "title": "Stellar on-chain data" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "Stellar Smart Wallet" } ] } }, "title": "Delete Card Response" }, "FundWalletAmountDTO": { "type": "object", "properties": { "amount": { "type": "number", "minimum": 1, "maximum": 100, "description": "The amount of currency to fund the wallet with. Between 1 and 100", "example": 10 }, "token": { "type": "string", "description": "The currency to fund the wallet with. Only USDXM is supported.", "enum": ["usdxm"], "example": "usdxm" }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "avalanche-fuji", "base-sepolia", "ethereum-sepolia", "optimism-sepolia", "polygon-amoy", "sei-atlantic-2-testnet", "skale-nebula-testnet", "solana", "stellar" ], "description": "The chain to fund the wallet with", "example": "base-sepolia" } }, "required": ["amount", "token", "chain"] }, "IPAssetGraphDto": { "type": "object", "properties": { "rootIpId": { "type": "string", "description": "The root IP ID for which the graph was generated", "example": "0xf6546a7e5342b152366E3B3FC773743b6D991aB2" }, "parents": { "type": "array", "items": { "$ref": "#/components/schemas/IPAssetGraphDto__schema0" }, "description": "Array of parent IP asset nodes", "example": { "ipId": "0xAb92d4f9EA97666c40527D54a9aF4D7F82ab8552", "parents": [ { "ipId": "0x9876543210abcdef9876543210abcdef98765432", "parents": [] } ] } }, "children": { "type": "array", "items": { "$ref": "#/components/schemas/IPAssetGraphDto__schema1" }, "description": "Array of child IP asset nodes", "example": { "ipId": "0x123456789abcdef0123456789abcdef012345678", "children": [ { "ipId": "0xabcdef0123456789abcdef0123456789abcdef01", "children": [] } ] } } }, "required": ["rootIpId", "parents", "children"] }, "IPAssetGraphDto__schema0": { "type": "object", "properties": { "ipId": { "type": "string", "description": "The IP ID of the parent asset", "example": "0xf6546a7e5342b152366E3B3FC773743b6D991aB2" }, "parents": { "type": "array", "items": { "$ref": "#/components/schemas/IPAssetGraphDto__schema0" }, "description": "Array of parent IP asset nodes, empty if no parents are available", "example": { "ipId": "0xAb92d4f9EA97666c40527D54a9aF4D7F82ab8552", "parents": [] } } }, "required": ["ipId", "parents"] }, "IPAssetGraphDto__schema1": { "type": "object", "properties": { "ipId": { "type": "string", "description": "The IP ID of the child asset", "example": "0x123456789abcdef0123456789abcdef012345678" }, "children": { "type": "array", "items": { "$ref": "#/components/schemas/IPAssetGraphDto__schema1" }, "description": "Array of child IP asset nodes, empty if no children are available", "example": { "ipId": "0xabcdef0123456789abcdef0123456789abcdef01", "children": [] } } }, "required": ["ipId", "children"] }, "SendOrDepositTokenV2025DTOClass": { "anyOf": [ { "type": "object", "properties": { "recipient": { "type": "string" }, "signer": { "description": "Optional signer locator. Defaults to admin signer", "type": "string", "title": "Signer Locator", "example": "external-wallet:0xdeadbeef" }, "amount": { "description": "Amount of tokens to transfer (in decimal value)", "type": "string", "pattern": "^\\d+(?:\\.\\d*)?$", "example": "42.69" }, "transactionType": { "default": "direct", "description": "Specifies the type of transaction. Choose 'direct' for standard interactions or 'regulated-transfer' for operations requiring compliance checks.", "anyOf": [ { "type": "string", "title": "Direct transaction", "description": "The transaction is executed directly from the wallet. Use this for standard blockchain operations that do not require additional regulatory oversight.", "enum": ["direct"] }, { "type": "string", "title": "Regulated transfer transaction", "description": "The transaction is routed through Crossmint's regulated infrastructure. This enables compliance with regulatory requirements and performs enhanced validation checks.", "enum": ["regulated-transfer"] }, { "type": "string", "title": "Onramp transaction", "description": "The transaction is routed through Crossmint's regulated infrastructure. This enables compliance with regulatory requirements and performs enhanced validation checks.", "enum": ["onramp"] } ] }, "memo": { "description": "Memo for the transaction. Only supported for Stellar", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["text"] }, "value": { "type": "string", "maxLength": 28 } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["id"] }, "value": { "type": "string" } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["hash"] }, "value": { "type": "string" } }, "required": ["type", "value"] } ], "example": { "type": "text", "value": "Hello, world!" } }, "fees": { "description": "Optional per-transaction fee configuration override. When omitted, the project default is used.", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"], "description": "Override the project-level fee mode for this transaction. When omitted, the project default is used." }, "token": { "description": "The fungible token to use when mode is 'user-fungible'. Defaults to 'USDC' if omitted.", "type": "string", "enum": ["USDC"] } }, "required": ["mode"] } }, "required": ["recipient"], "description": "Base fields for all token transfers" }, { "type": "object", "properties": { "signer": { "description": "Optional signer locator. Defaults to admin signer", "type": "string", "title": "Signer Locator", "example": "external-wallet:0xdeadbeef" }, "amount": { "type": "string", "pattern": "^\\d+(?:\\.\\d*)?$", "description": "Amount of tokens to transfer (in decimal value)", "example": "42.69" }, "transactionType": { "default": "direct", "description": "Specifies the type of transaction. Choose 'direct' for standard interactions or 'regulated-transfer' for operations requiring compliance checks.", "anyOf": [ { "type": "string", "title": "Direct transaction", "description": "The transaction is executed directly from the wallet. Use this for standard blockchain operations that do not require additional regulatory oversight.", "enum": ["direct"] }, { "type": "string", "title": "Regulated transfer transaction", "description": "The transaction is routed through Crossmint's regulated infrastructure. This enables compliance with regulatory requirements and performs enhanced validation checks.", "enum": ["regulated-transfer"] }, { "type": "string", "title": "Onramp transaction", "description": "The transaction is routed through Crossmint's regulated infrastructure. This enables compliance with regulatory requirements and performs enhanced validation checks.", "enum": ["onramp"] } ] }, "memo": { "description": "Memo for the transaction. Only supported for Stellar", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["text"] }, "value": { "type": "string", "maxLength": 28 } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["id"] }, "value": { "type": "string" } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["hash"] }, "value": { "type": "string" } }, "required": ["type", "value"] } ], "example": { "type": "text", "value": "Hello, world!" } }, "fees": { "description": "Optional per-transaction fee configuration override. When omitted, the project default is used.", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"], "description": "Override the project-level fee mode for this transaction. When omitted, the project default is used." }, "token": { "description": "The fungible token to use when mode is 'user-fungible'. Defaults to 'USDC' if omitted.", "type": "string", "enum": ["USDC"] } }, "required": ["mode"] }, "recipient": { "type": "string", "example": "CROSSMINT" } }, "required": ["amount", "recipient"], "description": "Base fields for all token deposits" } ] }, "SendTokenDTO": { "type": "object", "properties": { "recipient": { "type": "string" }, "signer": { "description": "Optional signer locator. Defaults to admin signer", "type": "string", "example": "evm-keypair:0xdeadbeef" }, "amount": { "description": "Amount of tokens to transfer (in decimal format)", "type": "string", "pattern": "^\\d+(?:\\.\\d*)?$", "example": "42.69" }, "transactionType": { "default": "direct", "description": "Specifies the type of transaction. Choose 'direct' for standard interactions or 'regulated-transfer' for operations requiring compliance checks.", "anyOf": [ { "type": "string", "title": "Direct transaction", "description": "The transaction is executed directly from the wallet. Use this for standard blockchain operations that do not require additional regulatory oversight.", "enum": ["direct"] }, { "type": "string", "title": "Regulated transfer transaction", "description": "The transaction is routed through Crossmint's regulated infrastructure. This enables compliance with regulatory requirements and performs enhanced validation checks.", "enum": ["regulated-transfer"] }, { "type": "string", "title": "Onramp transaction", "description": "The transaction is routed through Crossmint's regulated infrastructure. This enables compliance with regulatory requirements and performs enhanced validation checks.", "enum": ["onramp"] } ] } }, "required": ["recipient"] }, "SendTokenV2025DTO": { "type": "object", "properties": { "recipient": { "type": "string" }, "signer": { "description": "Optional signer locator. Defaults to admin signer", "type": "string", "title": "Signer Locator", "example": "external-wallet:0xdeadbeef" }, "amount": { "description": "Amount of tokens to transfer (in decimal value)", "type": "string", "pattern": "^\\d+(?:\\.\\d*)?$", "example": "42.69" }, "transactionType": { "default": "direct", "description": "Specifies the type of transaction. Choose 'direct' for standard interactions or 'regulated-transfer' for operations requiring compliance checks.", "anyOf": [ { "type": "string", "title": "Direct transaction", "description": "The transaction is executed directly from the wallet. Use this for standard blockchain operations that do not require additional regulatory oversight.", "enum": ["direct"] }, { "type": "string", "title": "Regulated transfer transaction", "description": "The transaction is routed through Crossmint's regulated infrastructure. This enables compliance with regulatory requirements and performs enhanced validation checks.", "enum": ["regulated-transfer"] }, { "type": "string", "title": "Onramp transaction", "description": "The transaction is routed through Crossmint's regulated infrastructure. This enables compliance with regulatory requirements and performs enhanced validation checks.", "enum": ["onramp"] } ] }, "memo": { "description": "Memo for the transaction. Only supported for Stellar", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["text"] }, "value": { "type": "string", "maxLength": 28 } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["id"] }, "value": { "type": "string" } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["hash"] }, "value": { "type": "string" } }, "required": ["type", "value"] } ], "example": { "type": "text", "value": "Hello, world!" } }, "fees": { "description": "Optional per-transaction fee configuration override. When omitted, the project default is used.", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"], "description": "Override the project-level fee mode for this transaction. When omitted, the project default is used." }, "token": { "description": "The fungible token to use when mode is 'user-fungible'. Defaults to 'USDC' if omitted.", "type": "string", "enum": ["USDC"] } } } }, "required": ["recipient", "fees"] }, "SetupCardProviderInputDTO": { "type": "object", "properties": { "provider": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "The card provider to configure.", "enum": ["rain"] }, "apiKey": { "type": "string", "minLength": 1, "description": "API key issued by the card provider when you create your account with them. Used by Crossmint to authenticate provider-side calls when issuing or revoking cards." } }, "required": ["type", "apiKey"] } ], "description": "Provider-specific configuration. Generic envelope keyed by `type` so additional providers can be supported without changing the request shape." } }, "required": ["provider"], "title": "Setup Card Provider Input" }, "SubmitApprovalV2025DTO": { "type": "object", "properties": { "approvals": { "minItems": 1, "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "description": "The locator for the passkey signer", "type": "string" }, "signature": { "type": "object", "properties": { "r": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "s": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["r", "s"], "description": "The signature components" }, "metadata": { "type": "object", "properties": { "authenticatorData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "challengeIndex": { "type": "number", "description": "Index of the challenge used" }, "clientDataJSON": { "type": "string", "description": "WebAuthn client data JSON string" }, "typeIndex": { "type": "number", "description": "Index of the signature type" }, "userVerificationRequired": { "type": "boolean", "description": "Whether user verification was required" } }, "required": [ "authenticatorData", "challengeIndex", "clientDataJSON", "typeIndex", "userVerificationRequired" ], "description": "WebAuthn signature metadata" } }, "required": ["signer", "signature", "metadata"], "description": "Schema for WebAuthn signature data", "title": "Passkey signature submission payload" }, { "type": "object", "properties": { "signer": { "description": "The locator for the external wallet signer", "type": "string" }, "signature": { "anyOf": [ { "type": "string", "description": "WebAuthn authenticator data as hex string" }, { "type": "string" } ], "description": "The cryptographic signature", "example": "0x4551567890abcdef..." } }, "required": ["signer", "signature"], "title": "External wallet signature submission payload", "description": "Schema for external wallet signature submission" }, { "type": "object", "properties": { "signer": { "description": "The locator for the server signer", "type": "string" }, "signature": { "anyOf": [ { "type": "string", "description": "WebAuthn authenticator data as hex string" }, { "type": "string" } ], "description": "The cryptographic signature", "example": "0x4551567890abcdef..." } }, "required": ["signer", "signature"], "title": "Server signer signature submission payload", "description": "Schema for server signer signature submission" }, { "type": "object", "properties": { "signer": { "description": "The locator for the email signer", "type": "string" }, "signature": { "anyOf": [ { "type": "string", "description": "WebAuthn authenticator data as hex string" }, { "type": "string" } ], "description": "The cryptographic signature", "example": "0x4551567890abcdef..." } }, "required": ["signer", "signature"], "title": "Email signer signature submission payload", "description": "Schema for email signer signature submission" }, { "type": "object", "properties": { "signer": { "description": "The locator for the phone signer", "type": "string" }, "signature": { "anyOf": [ { "type": "string", "description": "WebAuthn authenticator data as hex string" }, { "type": "string" } ], "description": "The cryptographic signature", "example": "0x4551567890abcdef..." } }, "required": ["signer", "signature"], "title": "Phone signer signature submission payload", "description": "Schema for phone signer signature submission" }, { "type": "object", "properties": { "signer": { "description": "The locator for the device signer", "type": "string" }, "signature": { "type": "object", "properties": { "r": { "type": "string", "description": "The amount of native token to send in wei" }, "s": { "type": "string", "description": "The amount of native token to send in wei" } }, "required": ["r", "s"], "description": "The p256 signature with r and s components", "example": { "r": "0x1234...", "s": "0x5678..." } } }, "required": ["signer", "signature"], "title": "Device signer signature submission payload", "description": "Schema for device signer signature submission" } ] }, "description": "Array of approvals to submit for this transaction" } }, "required": ["approvals"] }, "WalletBalanceResponseDTO": { "type": "array", "items": { "type": "object", "properties": { "token": { "type": "string", "enum": [ "ape", "bnb", "eth", "pathusd", "matic", "mnt", "pol", "sei", "chz", "avax", "fuel", "hbar", "vic", "ip", "zcx", "u2u", "flow", "usdc", "usdce", "busd", "usdxm", "usdt", "credit", "usdf", "pyusd0", "eurc", "usdg", "weth", "degen", "superverse", "pirate", "wld", "xmeme", "alphausd", "betausd", "thetausd", "wirex-usdc", "bonk", "phantom-cash", "xlm", "usdm0", "usdm1", "mgusd", "wirex-usdc", "sol", "sui", "apt", "sfuel", "xion" ], "description": "The token", "example": "eth" }, "decimals": { "type": "number", "description": "The number of decimals of the token", "example": 18 }, "balances": { "type": "object", "additionalProperties": { "type": "string" }, "description": "The balance of the wallet in different chains" } }, "required": ["token", "decimals", "balances"] }, "description": "The balances of the wallet", "example": { "token": "usdc", "decimals": 6, "balances": { "base": "121000000", "ethereum": "121000000", "total": "242000000" } } }, "WalletBalanceUnstableResponseDTO": { "type": "array", "items": { "type": "object", "properties": { "symbol": { "type": "string" }, "name": { "type": "string", "description": "The name of the token", "example": "USDC Token" }, "decimals": { "type": "number", "description": "The number of decimals of the token", "example": 18 }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "chains": { "type": "object", "additionalProperties": { "anyOf": [ { "type": "object", "properties": { "locator": { "type": "string", "description": "Either a token string (e.g., 'eth', 'sol', 'xlm') or a token locator string (e.g., 'ethereum:0x123', 'stellar:xlm')", "example": "stellar:xlm" }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "contractAddress": { "type": "string", "description": "The contract address of the token on the EVM chain. Not present for native tokens.", "example": "0x123" }, "available": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" } }, "required": ["amount", "rawAmount"], "example": { "amount": "18.8343253454", "rawAmount": "18834161225104097789" } }, "locked": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" } }, "required": ["amount", "rawAmount"], "example": { "amount": "18.8343253454", "rawAmount": "18834161225104097789" } }, "accounts": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" }, "available": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "locked": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "type": { "type": "string", "enum": ["wallet"] } }, "required": [ "amount", "rawAmount", "available", "locked", "type" ] }, { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" }, "available": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "locked": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "type": { "type": "string", "enum": ["card"] }, "provider": { "type": "string", "enum": ["rain"] } }, "required": [ "amount", "rawAmount", "available", "locked", "type", "provider" ] } ] } } }, "required": ["locator", "amount", "rawAmount"], "additionalProperties": false, "description": "Balance information per chain", "example": { "locator": "base:0x123", "amount": "18.833423432423", "rawAmount": "18834161225104097789", "contractAddress": "0x123" } }, { "type": "object", "properties": { "locator": { "type": "string", "description": "Either a token string (e.g., 'eth', 'sol', 'xlm') or a token locator string (e.g., 'ethereum:0x123', 'stellar:xlm')", "example": "stellar:xlm" }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "mintHash": { "type": "string", "description": "The mint hash of the token on Solana. Not present for native SOL.", "example": "123123" }, "available": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" } }, "required": ["amount", "rawAmount"], "example": { "amount": "18.8343253454", "rawAmount": "18834161225104097789" } }, "locked": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" } }, "required": ["amount", "rawAmount"], "example": { "amount": "18.8343253454", "rawAmount": "18834161225104097789" } }, "accounts": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" }, "available": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "locked": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "type": { "type": "string", "enum": ["wallet"] } }, "required": [ "amount", "rawAmount", "available", "locked", "type" ] }, { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" }, "available": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "locked": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "type": { "type": "string", "enum": ["card"] }, "provider": { "type": "string", "enum": ["rain"] } }, "required": [ "amount", "rawAmount", "available", "locked", "type", "provider" ] } ] } } }, "required": ["locator", "amount", "rawAmount"], "additionalProperties": false, "description": "Balance information for chain", "example": { "locator": "solana:31123", "amount": "18.833423432423", "rawAmount": "18834161225104097789", "mintHash": "123123" } }, { "type": "object", "properties": { "locator": { "type": "string", "description": "Either a token string (e.g., 'eth', 'sol', 'xlm') or a token locator string (e.g., 'ethereum:0x123', 'stellar:xlm')", "example": "stellar:xlm" }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "contractId": { "type": "string", "description": "The contract ID of the token on Stellar. Not present for native XLM.", "example": "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75" }, "available": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" } }, "required": ["amount", "rawAmount"], "example": { "amount": "18.8343253454", "rawAmount": "18834161225104097789" } }, "locked": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" } }, "required": ["amount", "rawAmount"], "example": { "amount": "18.8343253454", "rawAmount": "18834161225104097789" } }, "accounts": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" }, "available": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "locked": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "type": { "type": "string", "enum": ["wallet"] } }, "required": [ "amount", "rawAmount", "available", "locked", "type" ] }, { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" }, "available": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "locked": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "type": { "type": "string", "enum": ["card"] }, "provider": { "type": "string", "enum": ["rain"] } }, "required": [ "amount", "rawAmount", "available", "locked", "type", "provider" ] } ] } } }, "required": ["locator", "amount", "rawAmount"], "additionalProperties": false, "description": "Balance information for Stellar chain", "example": { "locator": "stellar:xlm", "amount": "100.5000000", "rawAmount": "1005000000", "contractId": "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA" } } ] }, "description": "Balance information per chain", "example": { "base": { "contractAddress": "0x123", "locator": "base:0x123", "amount": "18.833423432423", "rawAmount": "18834161225104097789" }, "solana": { "mintHash": "123123", "locator": "solana:132", "amount": "0", "rawAmount": "00000000000000000" }, "stellar": { "contractId": "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA", "locator": "stellar:xlm", "amount": "100.5000000", "rawAmount": "1005000000" } } } }, "required": ["decimals", "amount", "rawAmount", "chains"] }, "description": "Array of wallet balances per token", "example": { "symbol": "ETH", "name": "Ethereum", "decimals": 18, "amount": "18.8343253454", "rawAmount": "18834161225104097789", "chains": { "base": { "contractAddress": "0x123", "locator": "base:0x123", "amount": "18.833423432423", "rawAmount": "18834161225104097789" }, "solana": { "mintHash": "123123", "locator": "solana:132", "amount": "0.000000000000000", "rawAmount": "00000000000000000" }, "stellar": { "contractId": "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA", "locator": "stellar:xlm", "amount": "100.5000000", "rawAmount": "1005000000" } } } }, "WalletBalanceV20250609ResponseDTO": { "type": "array", "items": { "type": "object", "properties": { "symbol": { "type": "string" }, "name": { "type": "string", "description": "The name of the token", "example": "USDC Token" }, "decimals": { "type": "number", "description": "The number of decimals of the token", "example": 18 }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "chains": { "type": "object", "additionalProperties": { "anyOf": [ { "type": "object", "properties": { "locator": { "type": "string", "description": "Either a token string (e.g., 'eth', 'sol') or a token locator string (e.g., 'ethereum:0x123', 'solana:sol')", "example": "ethereum:0x123" }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "contractAddress": { "type": "string", "description": "The contract address of the token on the EVM chain. Not present for native tokens.", "example": "0x123" }, "available": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" } }, "required": ["amount", "rawAmount"], "example": { "amount": "18.8343253454", "rawAmount": "18834161225104097789" } }, "locked": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" } }, "required": ["amount", "rawAmount"], "example": { "amount": "18.8343253454", "rawAmount": "18834161225104097789" } }, "accounts": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" }, "available": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "locked": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "type": { "type": "string", "enum": ["wallet"] } }, "required": [ "amount", "rawAmount", "available", "locked", "type" ] }, { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" }, "available": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "locked": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "type": { "type": "string", "enum": ["card"] }, "provider": { "type": "string", "enum": ["rain"] } }, "required": [ "amount", "rawAmount", "available", "locked", "type", "provider" ] } ] } } }, "required": ["locator", "amount", "rawAmount"], "additionalProperties": false, "description": "Balance information per chain", "example": { "locator": "base:0x123", "amount": "18.833423432423", "rawAmount": "18834161225104097789", "contractAddress": "0x123" } }, { "type": "object", "properties": { "locator": { "type": "string", "description": "Either a token string (e.g., 'eth', 'sol') or a token locator string (e.g., 'ethereum:0x123', 'solana:sol')", "example": "ethereum:0x123" }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "mintHash": { "type": "string", "description": "The mint hash of the token on Solana. Not present for native SOL.", "example": "123123" }, "available": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" } }, "required": ["amount", "rawAmount"], "example": { "amount": "18.8343253454", "rawAmount": "18834161225104097789" } }, "locked": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" } }, "required": ["amount", "rawAmount"], "example": { "amount": "18.8343253454", "rawAmount": "18834161225104097789" } }, "accounts": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" }, "available": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "locked": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "type": { "type": "string", "enum": ["wallet"] } }, "required": [ "amount", "rawAmount", "available", "locked", "type" ] }, { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" }, "available": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "locked": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "type": { "type": "string", "enum": ["card"] }, "provider": { "type": "string", "enum": ["rain"] } }, "required": [ "amount", "rawAmount", "available", "locked", "type", "provider" ] } ] } } }, "required": ["locator", "amount", "rawAmount"], "additionalProperties": false, "description": "Balance information for chain", "example": { "locator": "solana:31123", "amount": "18.833423432423", "rawAmount": "18834161225104097789", "mintHash": "123123" } }, { "type": "object", "properties": { "locator": { "type": "string", "description": "Either a token string (e.g., 'eth', 'sol') or a token locator string (e.g., 'ethereum:0x123', 'solana:sol')", "example": "ethereum:0x123" }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "contractId": { "type": "string", "description": "The contract ID of the token on Stellar. Not present for native XLM.", "example": "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75" }, "available": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" } }, "required": ["amount", "rawAmount"], "example": { "amount": "18.8343253454", "rawAmount": "18834161225104097789" } }, "locked": { "type": "object", "properties": { "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" } }, "required": ["amount", "rawAmount"], "example": { "amount": "18.8343253454", "rawAmount": "18834161225104097789" } }, "accounts": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" }, "available": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "locked": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "type": { "type": "string", "enum": ["wallet"] } }, "required": [ "amount", "rawAmount", "available", "locked", "type" ] }, { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" }, "available": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "locked": { "type": "object", "properties": { "amount": { "type": "string" }, "rawAmount": { "type": "string" } }, "required": ["amount", "rawAmount"] }, "type": { "type": "string", "enum": ["card"] }, "provider": { "type": "string", "enum": ["rain"] } }, "required": [ "amount", "rawAmount", "available", "locked", "type", "provider" ] } ] } } }, "required": ["locator", "amount", "rawAmount"], "additionalProperties": false, "description": "Balance information for Stellar chain", "example": { "locator": "stellar:xlm", "amount": "100.5000000", "rawAmount": "1005000000", "contractId": "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA" } } ] }, "description": "Balance information per chain", "example": { "base": { "contractAddress": "0x123", "locator": "base:0x123", "amount": "18.833423432423", "rawAmount": "18834161225104097789" }, "solana": { "mintHash": "123123", "locator": "solana:132", "amount": "0", "rawAmount": "00000000000000000" } } } }, "required": ["decimals", "amount", "rawAmount", "chains"] }, "description": "Array of wallet balances per token", "example": { "symbol": "ETH", "name": "Ethereum", "decimals": 18, "amount": "18.8343253454", "rawAmount": "18834161225104097789", "chains": { "base": { "contractAddress": "0x123", "locator": "base:0x123", "amount": "18.833423432423", "rawAmount": "18834161225104097789" }, "solana": { "mintHash": "123123", "locator": "solana:132", "amount": "0.000000000000000", "rawAmount": "00000000000000000" } } } }, "WalletsActivityResponseUnstableDTO": { "type": "object", "properties": { "nextCursor": { "type": "string" }, "previousCursor": { "type": "string" }, "data": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "sender": { "type": "object", "properties": { "address": { "type": "string", "description": "Wallet address", "example": "0x1234567890123456789012345678901234567890" }, "chain": { "type": "string", "description": "Chain identifier", "enum": [ "solana", "sui", "aptos", "xion", "stellar", "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "example": "ethereum" }, "locator": { "type": "string", "description": "Wallet locator (e.g., 'email:dev@company.com:optimism' or 'optimism:0x123...456')", "example": "ethereum:0x1234567890123456789012345678901234567890" }, "owner": { "type": "string", "description": "Owner identifier", "example": "user-123" } }, "required": ["address", "locator"], "additionalProperties": false, "description": "Transfer participant (sender or recipient)", "example": { "address": "0x1234567890123456789012345678901234567890", "chain": "ethereum", "locator": "ethereum:0x1234567890123456789012345678901234567890", "owner": "user-123" } }, "recipient": { "type": "object", "properties": { "address": { "type": "string", "description": "Wallet address", "example": "0x1234567890123456789012345678901234567890" }, "chain": { "type": "string", "description": "Chain identifier", "enum": [ "solana", "sui", "aptos", "xion", "stellar", "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "example": "ethereum" }, "locator": { "type": "string", "description": "Wallet locator (e.g., 'email:dev@company.com:optimism' or 'optimism:0x123...456')", "example": "ethereum:0x1234567890123456789012345678901234567890" }, "owner": { "type": "string", "description": "Owner identifier", "example": "user-123" } }, "required": ["address", "locator"], "additionalProperties": false, "description": "Transfer participant (sender or recipient)", "example": { "address": "0x1234567890123456789012345678901234567890", "chain": "ethereum", "locator": "ethereum:0x1234567890123456789012345678901234567890", "owner": "user-123" } }, "token": { "anyOf": [ { "type": "object", "properties": { "locator": { "type": "string", "description": "Either a token string (e.g., 'eth', 'sol') or a token locator string (e.g., 'ethereum:0x123', 'solana:sol')", "example": "ethereum:0x123" }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "contractAddress": { "type": "string", "description": "The contract address of the token on the EVM chain. Not present for native tokens.", "example": "0x123" }, "symbol": { "type": "string", "description": "Token symbol", "example": "USDC" }, "decimals": { "type": "number", "description": "The number of decimals of the token", "example": 6 }, "type": { "type": "string", "description": "Token type", "enum": ["fungible"], "example": "fungible" }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "EVM chain identifier", "example": "ethereum" } }, "required": [ "locator", "amount", "rawAmount", "decimals", "type", "chain" ], "additionalProperties": false, "description": "EVM fungible token details", "example": { "type": "fungible", "chain": "ethereum", "locator": "ethereum:0x123", "amount": "18.833423432423", "rawAmount": "18834161225104097789", "contractAddress": "0x123", "decimals": 6 } }, { "type": "object", "properties": { "locator": { "type": "string", "description": "Either a token string (e.g., 'eth', 'sol') or a token locator string (e.g., 'ethereum:0x123', 'solana:sol')", "example": "ethereum:0x123" }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "mintHash": { "type": "string", "description": "The mint hash of the token on Solana. Not present for native SOL.", "example": "123123" }, "symbol": { "type": "string", "description": "Token symbol", "example": "USDC" }, "decimals": { "type": "number", "description": "The number of decimals of the token", "example": 6 }, "type": { "type": "string", "description": "Token type", "enum": ["fungible"], "example": "fungible" }, "chain": { "type": "string", "description": "Solana chain identifier", "enum": ["solana"], "example": "solana" } }, "required": [ "locator", "amount", "rawAmount", "decimals", "type", "chain" ], "additionalProperties": false, "description": "Solana fungible token details", "example": { "type": "fungible", "chain": "solana", "locator": "solana:31123", "amount": "18.833423432423", "rawAmount": "18834161225104097789", "mintHash": "123123", "decimals": 6 } }, { "type": "object", "properties": { "locator": { "type": "string", "description": "Either a token string (e.g., 'eth', 'sol') or a token locator string (e.g., 'ethereum:0x123', 'solana:sol')", "example": "ethereum:0x123" }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "contractId": { "type": "string", "description": "The contract ID of the token on Stellar. Not present for native XLM.", "example": "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75" }, "symbol": { "type": "string", "description": "Token symbol", "example": "USDC" }, "decimals": { "type": "number", "description": "The number of decimals of the token", "example": 6 }, "type": { "type": "string", "description": "Token type", "enum": ["fungible"], "example": "fungible" }, "chain": { "type": "string", "description": "Stellar chain identifier", "enum": ["stellar"], "example": "stellar" } }, "required": [ "locator", "amount", "rawAmount", "decimals", "type", "chain" ], "additionalProperties": false, "description": "Stellar fungible token details", "example": { "type": "fungible", "chain": "stellar", "locator": "stellar:xlm", "amount": "100.5000000", "rawAmount": "1005000000", "contractId": "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA", "decimals": 6 } } ], "type": "object", "description": "Fungible token details for any supported chain" }, "status": { "type": "string", "enum": ["succeeded", "failed"], "description": "The status of the transfer", "example": "succeeded" }, "transferId": { "type": "string", "description": "The unique identifier for the transfer. Can be used retrieve the transfer from the Get Transaction API", "example": "93fd7f08-0c63-4d73-808b-6268e665c964" }, "completedAt": { "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 when the transfer was completed", "example": "2025-10-21T12:34:56.789Z" }, "onChain": { "type": "object", "properties": { "txId": { "type": "string", "description": "Transaction hash/ID", "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" }, "explorerLink": { "type": "string", "description": "Block explorer URL", "example": "https://etherscan.io/tx/0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" } }, "required": ["txId", "explorerLink"], "additionalProperties": false, "description": "On-chain transaction details", "example": { "txId": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "explorerLink": "https://etherscan.io/tx/0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" } }, "type": { "type": "string", "description": "Event type for incoming transfers", "enum": ["wallets.transfer.in"], "example": "wallets.transfer.in" } }, "required": [ "sender", "recipient", "token", "status", "completedAt", "onChain", "type" ], "additionalProperties": false, "description": "Incoming wallet transfer event" }, { "type": "object", "properties": { "sender": { "type": "object", "properties": { "address": { "type": "string", "description": "Wallet address", "example": "0x1234567890123456789012345678901234567890" }, "chain": { "type": "string", "description": "Chain identifier", "enum": [ "solana", "sui", "aptos", "xion", "stellar", "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "example": "ethereum" }, "locator": { "type": "string", "description": "Wallet locator (e.g., 'email:dev@company.com:optimism' or 'optimism:0x123...456')", "example": "ethereum:0x1234567890123456789012345678901234567890" }, "owner": { "type": "string", "description": "Owner identifier", "example": "user-123" } }, "required": ["address", "locator"], "additionalProperties": false, "description": "Transfer participant (sender or recipient)", "example": { "address": "0x1234567890123456789012345678901234567890", "chain": "ethereum", "locator": "ethereum:0x1234567890123456789012345678901234567890", "owner": "user-123" } }, "recipient": { "type": "object", "properties": { "address": { "type": "string", "description": "Wallet address", "example": "0x1234567890123456789012345678901234567890" }, "chain": { "type": "string", "description": "Chain identifier", "enum": [ "solana", "sui", "aptos", "xion", "stellar", "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "example": "ethereum" }, "locator": { "type": "string", "description": "Wallet locator (e.g., 'email:dev@company.com:optimism' or 'optimism:0x123...456')", "example": "ethereum:0x1234567890123456789012345678901234567890" }, "owner": { "type": "string", "description": "Owner identifier", "example": "user-123" } }, "required": ["address", "locator"], "additionalProperties": false, "description": "Transfer participant (sender or recipient)", "example": { "address": "0x1234567890123456789012345678901234567890", "chain": "ethereum", "locator": "ethereum:0x1234567890123456789012345678901234567890", "owner": "user-123" } }, "token": { "anyOf": [ { "type": "object", "properties": { "locator": { "type": "string", "description": "Either a token string (e.g., 'eth', 'sol') or a token locator string (e.g., 'ethereum:0x123', 'solana:sol')", "example": "ethereum:0x123" }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "contractAddress": { "type": "string", "description": "The contract address of the token on the EVM chain. Not present for native tokens.", "example": "0x123" }, "symbol": { "type": "string", "description": "Token symbol", "example": "USDC" }, "decimals": { "type": "number", "description": "The number of decimals of the token", "example": 6 }, "type": { "type": "string", "description": "Token type", "enum": ["fungible"], "example": "fungible" }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "EVM chain identifier", "example": "ethereum" } }, "required": [ "locator", "amount", "rawAmount", "decimals", "type", "chain" ], "additionalProperties": false, "description": "EVM fungible token details", "example": { "type": "fungible", "chain": "ethereum", "locator": "ethereum:0x123", "amount": "18.833423432423", "rawAmount": "18834161225104097789", "contractAddress": "0x123", "decimals": 6 } }, { "type": "object", "properties": { "locator": { "type": "string", "description": "Either a token string (e.g., 'eth', 'sol') or a token locator string (e.g., 'ethereum:0x123', 'solana:sol')", "example": "ethereum:0x123" }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "mintHash": { "type": "string", "description": "The mint hash of the token on Solana. Not present for native SOL.", "example": "123123" }, "symbol": { "type": "string", "description": "Token symbol", "example": "USDC" }, "decimals": { "type": "number", "description": "The number of decimals of the token", "example": 6 }, "type": { "type": "string", "description": "Token type", "enum": ["fungible"], "example": "fungible" }, "chain": { "type": "string", "description": "Solana chain identifier", "enum": ["solana"], "example": "solana" } }, "required": [ "locator", "amount", "rawAmount", "decimals", "type", "chain" ], "additionalProperties": false, "description": "Solana fungible token details", "example": { "type": "fungible", "chain": "solana", "locator": "solana:31123", "amount": "18.833423432423", "rawAmount": "18834161225104097789", "mintHash": "123123", "decimals": 6 } }, { "type": "object", "properties": { "locator": { "type": "string", "description": "Either a token string (e.g., 'eth', 'sol') or a token locator string (e.g., 'ethereum:0x123', 'solana:sol')", "example": "ethereum:0x123" }, "amount": { "type": "string", "description": "The amount of the token after placing the decimal point", "example": "18.8343253454" }, "rawAmount": { "type": "string", "description": "The raw amount of the token", "example": "18834161225104097789" }, "contractId": { "type": "string", "description": "The contract ID of the token on Stellar. Not present for native XLM.", "example": "CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75" }, "symbol": { "type": "string", "description": "Token symbol", "example": "USDC" }, "decimals": { "type": "number", "description": "The number of decimals of the token", "example": 6 }, "type": { "type": "string", "description": "Token type", "enum": ["fungible"], "example": "fungible" }, "chain": { "type": "string", "description": "Stellar chain identifier", "enum": ["stellar"], "example": "stellar" } }, "required": [ "locator", "amount", "rawAmount", "decimals", "type", "chain" ], "additionalProperties": false, "description": "Stellar fungible token details", "example": { "type": "fungible", "chain": "stellar", "locator": "stellar:xlm", "amount": "100.5000000", "rawAmount": "1005000000", "contractId": "CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA", "decimals": 6 } } ], "type": "object", "description": "Fungible token details for any supported chain" }, "status": { "type": "string", "enum": ["succeeded", "failed"], "description": "The status of the transfer", "example": "succeeded" }, "transferId": { "type": "string", "description": "The unique identifier for the transfer. Can be used retrieve the transfer from the Get Transaction API", "example": "93fd7f08-0c63-4d73-808b-6268e665c964" }, "completedAt": { "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 when the transfer was completed", "example": "2025-10-21T12:34:56.789Z" }, "onChain": { "type": "object", "properties": { "txId": { "type": "string", "description": "Transaction hash/ID", "example": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" }, "explorerLink": { "type": "string", "description": "Block explorer URL", "example": "https://etherscan.io/tx/0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" } }, "required": ["txId", "explorerLink"], "additionalProperties": false, "description": "On-chain transaction details", "example": { "txId": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "explorerLink": "https://etherscan.io/tx/0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef" } }, "error": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message", "example": "Transaction reverted" }, "reason": { "type": "string", "description": "Error reason", "example": "Insufficient funds" }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } }, "logs": { "type": "object", "description": "Additional error logs", "example": "" } }, "required": ["message", "reason"], "additionalProperties": false, "description": "Error details for failed transfers", "example": { "message": "Transaction reverted", "reason": "Insufficient funds" } }, "type": { "type": "string", "description": "Event type for outgoing transfers", "enum": ["wallets.transfer.out"], "example": "wallets.transfer.out" } }, "required": ["sender", "recipient", "token", "status", "completedAt", "type"], "additionalProperties": false, "description": "Outgoing wallet transfer event" } ], "type": "object", "description": "A single wallet transfer event (incoming or outgoing, unstable version)" } } }, "required": ["data"] }, "WalletsMultipleSignatureV2025ResponseDTO": { "type": "object", "properties": { "signatures": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the signature" }, "type": { "type": "string", "enum": ["message", "typed-data", "auth-entries"], "description": "The type of signature" }, "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the signature" }, "params": { "anyOf": [ { "type": "object", "properties": { "message": { "type": "string", "description": "The message in plain text to sign" }, "signer": { "description": "The full signer object who will submit this signature. Defaults to the wallet's admin signer.", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ] }, "chain": { "description": "The chain on which the signature will be submitted", "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ] } }, "required": ["message"], "title": "Message signature parameters", "description": "Parameters for a message signature" }, { "type": "object", "properties": { "typedData": { "type": "object", "properties": { "domain": { "type": "object", "properties": { "name": { "type": "string" }, "version": { "type": "string" }, "chainId": { "type": "number" }, "verifyingContract": { "type": "string", "description": "An EVM address string" }, "salt": { "type": "string", "description": "WebAuthn authenticator data as hex string" } }, "required": [ "name", "version", "chainId", "verifyingContract" ] }, "types": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string" } }, "required": ["name", "type"] } } }, "primaryType": { "type": "string" }, "message": { "type": "object", "additionalProperties": true } }, "required": ["domain", "types", "primaryType", "message"] }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "The chain on which the signature will be submitted" }, "signer": { "description": "The full signer object who will approve this signature", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ] }, "isSmartWalletSignature": { "description": "Whether the signature corresponds to the smart wallet or to the signer. If true, the signature will be wrapped with ERC6492.", "type": "boolean" } }, "required": ["typedData", "chain"], "title": "Typed data signature parameters", "description": "Parameters for a typed data signature" }, { "type": "object", "properties": { "authorizationEntries": { "type": "string", "description": "Base64-encoded XDR array of the authorization entries" }, "signer": { "description": "The full signer object who will approve this entry", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ] } }, "required": ["authorizationEntries"], "title": "Auth entries signature parameters", "description": "Parameters for Stellar authorization entries signature (SEP-45)" } ], "description": "Type-specific signature parameters" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": ["signature", "submittedAt", "signer", "message"] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the signature fails" }, "outputSignature": { "description": "The wallet's output signature of the request", "type": "string" } }, "required": ["id", "type", "chainType", "walletType", "status", "params", "createdAt"], "description": "Complete signature response including status, signing requirements, and wallet type specific data" } } }, "required": ["signatures"] }, "WalletsMultipleTransactionV2025ResponseDTO": { "type": "object", "properties": { "transactions": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "calls": { "minItems": 1, "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" }, "value": { "default": "0", "description": "The amount of native token to send in wei", "type": "string" } }, "required": ["address", "functionName", "abi", "args"], "title": "EVM contract call transaction parameters", "description": "Parameters for a transaction to execute a contract function" }, { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "value": { "type": "string", "description": "The amount of native token to send in wei" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "value", "data"], "title": "EVM direct calldata transaction parameters", "description": "Parameters for a transaction to send a direct calldata transaction" }, { "type": "object", "properties": { "transaction": { "description": "Serialized EVM transaction" } }, "required": ["transaction"], "title": "EVM serialized transaction parameters", "description": "Parameters for a transaction to send a serialized EVM transaction" } ], "description": "Transaction data to execute" }, "description": "Array of transaction calls to execute" }, "chain": { "description": "The chain where the signer will be registered" }, "signer": { "description": "The full signer object who will submit this transaction", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ] } }, "required": ["calls", "chain"] }, "onChain": { "type": "object", "properties": { "userOperation": { "type": "object", "properties": { "sender": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "nonce": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "verificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "preVerificationGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxPriorityFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymaster": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterVerificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterPostOpGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "signature": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factory": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factoryData": { "type": "string", "description": "WebAuthn authenticator data as hex string" } }, "required": [ "sender", "nonce", "callData", "callGasLimit", "verificationGasLimit", "preVerificationGas", "maxFeePerGas", "maxPriorityFeePerGas", "signature" ] }, "userOperationHash": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "proxiedTxId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["userOperation", "userOperationHash"], "description": "EVM smart wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "EVM Smart Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "call": { "anyOf": [ { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"], "additionalProperties": false }, { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" } }, "required": ["address", "functionName", "abi", "args"], "additionalProperties": false } ], "description": "The transaction call to execute" }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "The chain on which the signature will be submitted" } }, "required": ["call", "chain"], "description": "EVM MPC wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "call": { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"] }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["call"], "description": "EVM MPC wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "EVM MPC Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction" }, "requiredSigners": { "description": "Optional array of additional full signer objects required for the transaction", "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" } }, "signer": { "description": "The full signer object who will submit this transaction. Defaults to the admin signer.", "anyOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" } ] }, "feeConfig": { "anyOf": [ { "type": "object", "properties": { "feePayer": { "type": "string", "description": "The address that will pay for the transaction" }, "token": { "type": "string", "enum": ["sol", "usdc", "usdt"], "description": "The token to use for the fee" }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": ["feePayer", "token", "amount"] }, { "type": "object", "properties": { "feePayer": { "type": "string", "enum": ["crossmint"] }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": ["feePayer", "amount"] } ] } }, "required": ["transaction", "feeConfig"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "Solana Smart Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction" }, "requiredSigners": { "description": "Optional array of additional full signer objects required for the transaction", "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" } } }, "required": ["transaction"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "Solana MPC Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["contract-call"] }, "contractId": { "type": "string", "description": "The recipient address for this transaction call", "example": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J" }, "method": { "type": "string", "description": "The name of the function to call" }, "memo": { "description": "The memo for the transaction", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["text"] }, "value": { "type": "string", "maxLength": 28 } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["id"] }, "value": { "type": "string" } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["hash"] }, "value": { "type": "string" } }, "required": ["type", "value"] } ], "example": { "type": "text", "value": "Hello, world!" } }, "args": { "type": "object", "additionalProperties": true, "description": "The arguments to pass to the function" } }, "required": ["type", "contractId", "method", "args"], "title": "Stellar contract call transaction parameters", "description": "Parameters for a transaction to execute a smart contract function", "example": { "type": "contract-call", "contractId": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "method": "transfer", "args": { "to": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "from": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "amount": "1000000000000000000" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["upgrade-wallet"] } }, "required": ["type"], "title": "Stellar upgrade wallet transaction", "description": "Upgrades the wallet's on-chain contract to a new version. The wallet will be locked until a migrate-wallet transaction completes the upgrade.", "example": { "type": "upgrade-wallet" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["migrate-wallet"] } }, "required": ["type"], "title": "Stellar migrate wallet transaction", "description": "Completes a pending wallet upgrade by migrating on-chain signer data to the new contract version. Must be called after upgrade-wallet.", "example": { "type": "migrate-wallet" } } ], "description": "Stellar transaction to execute" }, "signer": { "description": "The locator for the signer who will submit this transaction. Defaults to the admin signer.", "type": "string", "title": "Signer Locator", "example": "external-wallet:0x1234567890123456789012345678901234567890" } }, "required": ["transaction"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "object", "properties": { "method": { "type": "string" }, "tx": { "type": "string" } }, "required": ["method", "tx"], "title": "Stellar on-chain transaction", "description": "The Stellar Transaction Envelope" }, "txId": { "description": "The transaction hash", "type": "string" }, "ledger": { "description": "The ledger number where the transaction was included", "type": "number" }, "expiration": { "type": "number", "description": "The expiration of the transaction" }, "result": { "description": "The Transaction Result in XDR format" }, "explorerLink": { "description": "Optional link to view the transaction in an explorer", "type": "string" } }, "required": ["transaction", "expiration"], "title": "Stellar on-chain data" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": [ "chainType", "walletType", "params", "onChain", "id", "status", "createdAt" ], "title": "Stellar Smart Wallet" } ], "description": "The signer registration transaction the wallet admin must sign and submit to add (on create) or revoke (on delete) the card's delegated topup signer on-chain." } } }, "required": ["transactions"], "title": "Transactions Response" }, "WalletsSignatureV2025ResponseDTO": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the signature" }, "type": { "type": "string", "enum": ["message", "typed-data", "auth-entries"], "description": "The type of signature" }, "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the signature" }, "params": { "anyOf": [ { "type": "object", "properties": { "message": { "type": "string", "description": "The message in plain text to sign" }, "signer": { "description": "The full signer object who will submit this signature. Defaults to the wallet's admin signer.", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ] }, "chain": { "description": "The chain on which the signature will be submitted", "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ] } }, "required": ["message"], "title": "Message signature parameters", "description": "Parameters for a message signature" }, { "type": "object", "properties": { "typedData": { "type": "object", "properties": { "domain": { "type": "object", "properties": { "name": { "type": "string" }, "version": { "type": "string" }, "chainId": { "type": "number" }, "verifyingContract": { "type": "string", "description": "An EVM address string" }, "salt": { "type": "string", "description": "WebAuthn authenticator data as hex string" } }, "required": ["name", "version", "chainId", "verifyingContract"] }, "types": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "type": { "type": "string" } }, "required": ["name", "type"] } } }, "primaryType": { "type": "string" }, "message": { "type": "object", "additionalProperties": true } }, "required": ["domain", "types", "primaryType", "message"] }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "The chain on which the signature will be submitted" }, "signer": { "description": "The full signer object who will approve this signature", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ] }, "isSmartWalletSignature": { "description": "Whether the signature corresponds to the smart wallet or to the signer. If true, the signature will be wrapped with ERC6492.", "type": "boolean" } }, "required": ["typedData", "chain"], "title": "Typed data signature parameters", "description": "Parameters for a typed data signature" }, { "type": "object", "properties": { "authorizationEntries": { "type": "string", "description": "Base64-encoded XDR array of the authorization entries" }, "signer": { "description": "The full signer object who will approve this entry", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ] } }, "required": ["authorizationEntries"], "title": "Auth entries signature parameters", "description": "Parameters for Stellar authorization entries signature (SEP-45)" } ], "description": "Type-specific signature parameters" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": ["signature", "submittedAt", "signer", "message"] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the signature fails" }, "outputSignature": { "description": "The wallet's output signature of the request", "type": "string" } }, "required": ["id", "type", "chainType", "walletType", "status", "params", "approvals", "createdAt"] }, "WalletsTransactionV2025ResponseDTOClass": { "anyOf": [ { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "calls": { "minItems": 1, "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" }, "value": { "default": "0", "description": "The amount of native token to send in wei", "type": "string" } }, "required": ["address", "functionName", "abi", "args"], "title": "EVM contract call transaction parameters", "description": "Parameters for a transaction to execute a contract function" }, { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "value": { "type": "string", "description": "The amount of native token to send in wei" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "value", "data"], "title": "EVM direct calldata transaction parameters", "description": "Parameters for a transaction to send a direct calldata transaction" }, { "type": "object", "properties": { "transaction": { "description": "Serialized EVM transaction" } }, "required": ["transaction"], "title": "EVM serialized transaction parameters", "description": "Parameters for a transaction to send a serialized EVM transaction" } ], "description": "Transaction data to execute" }, "description": "Array of transaction calls to execute" }, "chain": { "description": "The chain where the signer will be registered" }, "signer": { "description": "The full signer object who will submit this transaction", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ] } }, "required": ["calls", "chain"] }, "onChain": { "type": "object", "properties": { "userOperation": { "type": "object", "properties": { "sender": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "nonce": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "verificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "preVerificationGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxPriorityFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymaster": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterVerificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterPostOpGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "signature": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factory": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factoryData": { "type": "string", "description": "WebAuthn authenticator data as hex string" } }, "required": [ "sender", "nonce", "callData", "callGasLimit", "verificationGasLimit", "preVerificationGas", "maxFeePerGas", "maxPriorityFeePerGas", "signature" ] }, "userOperationHash": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "proxiedTxId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["userOperation", "userOperationHash"], "description": "EVM smart wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": ["signature", "submittedAt", "signer", "message"] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": ["chainType", "walletType", "params", "onChain", "id", "status", "createdAt"], "title": "EVM Smart Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "call": { "anyOf": [ { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"], "additionalProperties": false }, { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" } }, "required": ["address", "functionName", "abi", "args"], "additionalProperties": false } ], "description": "The transaction call to execute" }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "The chain on which the signature will be submitted" } }, "required": ["call", "chain"], "description": "EVM MPC wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "call": { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"] }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["call"], "description": "EVM MPC wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": ["signature", "submittedAt", "signer", "message"] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": ["chainType", "walletType", "params", "onChain", "id", "status", "createdAt"], "title": "EVM MPC Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction" }, "requiredSigners": { "description": "Optional array of additional full signer objects required for the transaction", "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" } }, "signer": { "description": "The full signer object who will submit this transaction. Defaults to the admin signer.", "anyOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" } ] }, "feeConfig": { "anyOf": [ { "type": "object", "properties": { "feePayer": { "type": "string", "description": "The address that will pay for the transaction" }, "token": { "type": "string", "enum": ["sol", "usdc", "usdt"], "description": "The token to use for the fee" }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": ["feePayer", "token", "amount"] }, { "type": "object", "properties": { "feePayer": { "type": "string", "enum": ["crossmint"] }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": ["feePayer", "amount"] } ] } }, "required": ["transaction", "feeConfig"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": ["signature", "submittedAt", "signer", "message"] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": ["chainType", "walletType", "params", "onChain", "id", "status", "createdAt"], "title": "Solana Smart Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction" }, "requiredSigners": { "description": "Optional array of additional full signer objects required for the transaction", "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" } } }, "required": ["transaction"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": ["signature", "submittedAt", "signer", "message"] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": ["chainType", "walletType", "params", "onChain", "id", "status", "createdAt"], "title": "Solana MPC Wallet" }, { "type": "object", "properties": { "chainType": { "type": "string", "enum": ["evm", "solana", "aptos", "sui", "stellar"], "description": "The blockchain type of the wallet" }, "walletType": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)" }, "params": { "type": "object", "properties": { "transaction": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["contract-call"] }, "contractId": { "type": "string", "description": "The recipient address for this transaction call", "example": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J" }, "method": { "type": "string", "description": "The name of the function to call" }, "memo": { "description": "The memo for the transaction", "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["text"] }, "value": { "type": "string", "maxLength": 28 } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["id"] }, "value": { "type": "string" } }, "required": ["type", "value"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["hash"] }, "value": { "type": "string" } }, "required": ["type", "value"] } ], "example": { "type": "text", "value": "Hello, world!" } }, "args": { "type": "object", "additionalProperties": true, "description": "The arguments to pass to the function" } }, "required": ["type", "contractId", "method", "args"], "title": "Stellar contract call transaction parameters", "description": "Parameters for a transaction to execute a smart contract function", "example": { "type": "contract-call", "contractId": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "method": "transfer", "args": { "to": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "from": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "amount": "1000000000000000000" } } }, { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["upgrade-wallet"] } }, "required": ["type"], "title": "Stellar upgrade wallet transaction", "description": "Upgrades the wallet's on-chain contract to a new version. The wallet will be locked until a migrate-wallet transaction completes the upgrade.", "example": { "type": "upgrade-wallet" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "The type of transaction to execute", "enum": ["migrate-wallet"] } }, "required": ["type"], "title": "Stellar migrate wallet transaction", "description": "Completes a pending wallet upgrade by migrating on-chain signer data to the new contract version. Must be called after upgrade-wallet.", "example": { "type": "migrate-wallet" } } ], "description": "Stellar transaction to execute" }, "signer": { "description": "The locator for the signer who will submit this transaction. Defaults to the admin signer.", "type": "string", "title": "Signer Locator", "example": "external-wallet:0x1234567890123456789012345678901234567890" } }, "required": ["transaction"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "object", "properties": { "method": { "type": "string" }, "tx": { "type": "string" } }, "required": ["method", "tx"], "title": "Stellar on-chain transaction", "description": "The Stellar Transaction Envelope" }, "txId": { "description": "The transaction hash", "type": "string" }, "ledger": { "description": "The ledger number where the transaction was included", "type": "number" }, "expiration": { "type": "number", "description": "The expiration of the transaction" }, "result": { "description": "The Transaction Result in XDR format" }, "explorerLink": { "description": "Optional link to view the transaction in an explorer", "type": "string" } }, "required": ["transaction", "expiration"], "title": "Stellar on-chain data" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": ["signer", "message"] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": ["type", "locator"], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "quorumApprovals"], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["passkey"] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": ["type", "id", "locator"], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["api-key"] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["email"] }, "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,}$" }, "locator": { "type": "string" } }, "required": ["type", "email", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["phone"] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "phone", "locator"] }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["server"] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": ["type", "address", "locator"] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": ["signature", "submittedAt", "signer", "message"] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": ["user-native", "user-fungible", "project"] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": ["pending", "settled", "failed"] } }, "required": ["status"] } }, "required": ["mode"] } }, "required": ["chainType", "walletType", "params", "onChain", "id", "status", "createdAt"], "title": "Stellar Smart Wallet" } ], "description": "The signer registration transaction the wallet admin must sign and submit to add (on create) or revoke (on delete) the card's delegated topup signer on-chain." }, "WalletsV1Alpha2TransactionResponseDTOClass": { "oneOf": [ { "type": "object", "properties": { "walletType": { "type": "string", "description": "The type of wallet that created this transaction", "enum": ["evm-smart-wallet"] }, "params": { "type": "object", "properties": { "calls": { "minItems": 1, "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" }, "value": { "default": "0", "description": "The amount of native token to send in wei", "type": "string" } }, "required": ["address", "functionName", "abi", "args"], "title": "EVM contract call transaction parameters", "description": "Parameters for a transaction to execute a contract function" }, { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "value": { "type": "string", "description": "The amount of native token to send in wei" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "value", "data"], "title": "EVM direct calldata transaction parameters", "description": "Parameters for a transaction to send a direct calldata transaction" }, { "type": "object", "properties": { "transaction": { "description": "Serialized EVM transaction" } }, "required": ["transaction"], "title": "EVM serialized transaction parameters", "description": "Parameters for a transaction to send a serialized EVM transaction" } ], "description": "Transaction data to execute" }, "description": "Array of transaction calls to execute" }, "chain": { "description": "The chain where the signer will be registered" }, "signer": { "description": "The locator for the signer who will submit this transaction", "type": "string" } }, "required": ["calls", "chain"], "description": "EVM smart wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "userOperation": { "type": "object", "properties": { "sender": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "nonce": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "verificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "preVerificationGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxPriorityFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymaster": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterVerificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterPostOpGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "signature": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factory": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factoryData": { "type": "string", "description": "WebAuthn authenticator data as hex string" } }, "required": [ "sender", "nonce", "callData", "callGasLimit", "verificationGasLimit", "preVerificationGas", "maxFeePerGas", "maxPriorityFeePerGas", "signature" ] }, "userOperationHash": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "proxiedTxId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["userOperation", "userOperationHash"], "description": "EVM smart wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the signer that's pending approval" }, "message": { "type": "string", "description": "The message that needs to be signed" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "message"] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "signer": { "type": "string", "description": "The locator of the signer" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signature", "submittedAt", "signer", "message"] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "type": "number" }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] } }, "required": ["walletType", "params", "onChain", "id", "status", "createdAt"], "title": "EVM transaction response" }, { "type": "object", "properties": { "walletType": { "type": "string", "description": "The type of wallet that created this transaction", "enum": ["solana-mpc-wallet"] }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction", "example": "4hXTCkRzt9WyecNzV1XPgCDfGAZzQKNxLXgynz5QDuWWPSAZBZSHptvWRL3BjCvzUXRdKvHL2b7yGrRQcWyaqsaBCncVG7BFggS8w9snUts67BSh3EqKpXLUm5UMHfD7ZBe9GhARjbNQMLJ1QD3Spr6oMTBU6EhdB4RD8CP2xUxr2u3d6fos36PD98XS6oX8TQjLpsMwncs5DAMiD4nNnR8NBfyghGCWvCVifVwvA8B8TJxE1aiyiv2L429BCWfyzAme5sZW8rDb14NeCQHhZbtNqfXhcp2tAnaAT" }, "requiredSigners": { "description": "Optional array of additional signers required for the transaction", "type": "array", "items": { "type": "string", "description": "The locator of the signer" } } }, "required": ["transaction"], "description": "Solana custodial wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the signer that's pending approval" }, "message": { "type": "string", "description": "The message that needs to be signed" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "message"] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "signer": { "type": "string", "description": "The locator of the signer" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signature", "submittedAt", "signer", "message"] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "type": "number" }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] } }, "required": ["walletType", "params", "onChain", "id", "status", "createdAt"], "title": "Solana transaction response" }, { "type": "object", "properties": { "walletType": { "type": "string", "description": "The type of wallet that created this transaction", "enum": ["evm-mpc-wallet"] }, "params": { "type": "object", "properties": { "call": { "anyOf": [ { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"], "additionalProperties": false }, { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" } }, "required": ["address", "functionName", "abi", "args"], "additionalProperties": false } ], "description": "The transaction call to execute" }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "The chain on which the signature will be submitted" } }, "required": ["call", "chain"], "description": "EVM MPC wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "call": { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"] }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["call"], "description": "EVM MPC wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the signer that's pending approval" }, "message": { "type": "string", "description": "The message that needs to be signed" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "message"] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "signer": { "type": "string", "description": "The locator of the signer" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signature", "submittedAt", "signer", "message"] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "type": "number" }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] } }, "required": ["walletType", "params", "onChain", "id", "status", "createdAt"], "title": "EVM MPC transaction response" }, { "type": "object", "properties": { "walletType": { "type": "string", "description": "The type of wallet that created this transaction", "enum": ["solana-smart-wallet"] }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction", "example": "4hXTCkRzt9WyecNzV1XPgCDfGAZzQKNxLXgynz5QDuWWPSAZBZSHptvWRL3BjCvzUXRdKvHL2b7yGrRQcWyaqsaBCncVG7BFggS8w9snUts67BSh3EqKpXLUm5UMHfD7ZBe9GhARjbNQMLJ1QD3Spr6oMTBU6EhdB4RD8CP2xUxr2u3d6fos36PD98XS6oX8TQjLpsMwncs5DAMiD4nNnR8NBfyghGCWvCVifVwvA8B8TJxE1aiyiv2L429BCWfyzAme5sZW8rDb14NeCQHhZbtNqfXhcp2tAnaAT" }, "requiredSigners": { "description": "Optional array of additional signers required for the transaction", "type": "array", "items": { "type": "string", "description": "The locator of the signer" } }, "signer": { "description": "The locator for the signer who will submit this transaction. Defaults to the admin signer.", "type": "string" }, "feeConfig": { "anyOf": [ { "type": "object", "properties": { "feePayer": { "type": "string", "description": "The address that will pay for the transaction" }, "token": { "type": "string", "enum": ["sol", "usdc", "usdt"], "description": "The token to use for the fee" }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": ["feePayer", "token", "amount"] }, { "type": "object", "properties": { "feePayer": { "type": "string", "enum": ["crossmint"] }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": ["feePayer", "amount"] } ] } }, "required": ["transaction", "feeConfig"], "description": "Solana smart wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the signer that's pending approval" }, "message": { "type": "string", "description": "The message that needs to be signed" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "message"] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "signer": { "type": "string", "description": "The locator of the signer" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signature", "submittedAt", "signer", "message"] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "type": "number" }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] } }, "required": ["walletType", "params", "onChain", "id", "status", "createdAt"], "title": "Solana smart wallet transaction response" } ] }, "WalletsV1Alpha2TransactionResponseWithSendParamsDTOClass": { "oneOf": [ { "type": "object", "properties": { "walletType": { "type": "string", "description": "The type of wallet that created this transaction", "enum": ["evm-smart-wallet"] }, "params": { "type": "object", "properties": { "calls": { "minItems": 1, "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" }, "value": { "default": "0", "description": "The amount of native token to send in wei", "type": "string" } }, "required": ["address", "functionName", "abi", "args"], "title": "EVM contract call transaction parameters", "description": "Parameters for a transaction to execute a contract function" }, { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "value": { "type": "string", "description": "The amount of native token to send in wei" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "value", "data"], "title": "EVM direct calldata transaction parameters", "description": "Parameters for a transaction to send a direct calldata transaction" }, { "type": "object", "properties": { "transaction": { "description": "Serialized EVM transaction" } }, "required": ["transaction"], "title": "EVM serialized transaction parameters", "description": "Parameters for a transaction to send a serialized EVM transaction" } ], "description": "Transaction data to execute" }, "description": "Array of transaction calls to execute" }, "chain": { "description": "The chain where the signer will be registered" }, "signer": { "description": "The locator for the signer who will submit this transaction", "type": "string" } }, "required": ["calls", "chain"], "description": "EVM smart wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "userOperation": { "type": "object", "properties": { "sender": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "nonce": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "callGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "verificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "preVerificationGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "maxPriorityFeePerGas": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymaster": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterVerificationGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterData": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "paymasterPostOpGasLimit": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "signature": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factory": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "factoryData": { "type": "string", "description": "WebAuthn authenticator data as hex string" } }, "required": [ "sender", "nonce", "callData", "callGasLimit", "verificationGasLimit", "preVerificationGas", "maxFeePerGas", "maxPriorityFeePerGas", "signature" ] }, "userOperationHash": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "proxiedTxId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["userOperation", "userOperationHash"], "description": "EVM smart wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the signer that's pending approval" }, "message": { "type": "string", "description": "The message that needs to be signed" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "message"] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "signer": { "type": "string", "description": "The locator of the signer" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signature", "submittedAt", "signer", "message"] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "type": "number" }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] } }, "required": ["walletType", "params", "onChain", "id", "status", "createdAt"], "title": "EVM transaction response" }, { "type": "object", "properties": { "walletType": { "type": "string", "description": "The type of wallet that created this transaction", "enum": ["solana-mpc-wallet"] }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction", "example": "4hXTCkRzt9WyecNzV1XPgCDfGAZzQKNxLXgynz5QDuWWPSAZBZSHptvWRL3BjCvzUXRdKvHL2b7yGrRQcWyaqsaBCncVG7BFggS8w9snUts67BSh3EqKpXLUm5UMHfD7ZBe9GhARjbNQMLJ1QD3Spr6oMTBU6EhdB4RD8CP2xUxr2u3d6fos36PD98XS6oX8TQjLpsMwncs5DAMiD4nNnR8NBfyghGCWvCVifVwvA8B8TJxE1aiyiv2L429BCWfyzAme5sZW8rDb14NeCQHhZbtNqfXhcp2tAnaAT" }, "requiredSigners": { "description": "Optional array of additional signers required for the transaction", "type": "array", "items": { "type": "string", "description": "The locator of the signer" } } }, "required": ["transaction"], "description": "Solana custodial wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the signer that's pending approval" }, "message": { "type": "string", "description": "The message that needs to be signed" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "message"] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "signer": { "type": "string", "description": "The locator of the signer" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signature", "submittedAt", "signer", "message"] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "type": "number" }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] } }, "required": ["walletType", "params", "onChain", "id", "status", "createdAt"], "title": "Solana transaction response" }, { "type": "object", "properties": { "walletType": { "type": "string", "description": "The type of wallet that created this transaction", "enum": ["evm-mpc-wallet"] }, "params": { "type": "object", "properties": { "call": { "anyOf": [ { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"], "additionalProperties": false }, { "type": "object", "properties": { "address": { "type": "string", "description": "The recipient address for this transaction call" }, "functionName": { "type": "string", "description": "The name of the function to call" }, "abi": { "description": "The ABI for the function to call", "type": "array", "items": {} }, "args": { "type": "array", "items": {}, "description": "The arguments to pass to the function" } }, "required": ["address", "functionName", "abi", "args"], "additionalProperties": false } ], "description": "The transaction call to execute" }, "chain": { "type": "string", "enum": [ "arbitrum-sepolia", "arc-testnet", "avalanche-fuji", "curtis", "base-sepolia", "bsc-testnet", "chiliz-spicy-testnet", "ethereum-sepolia", "hypersonic-testnet", "mantle-sepolia", "optimism-sepolia", "polygon-amoy", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "scroll-sepolia", "sei-atlantic-2-testnet", "shape-sepolia", "skale-nebula-testnet", "space-testnet", "story-testnet", "verify-testnet", "zora-sepolia", "abstract-testnet", "flow-testnet", "tempo-testnet", "robinhood-chain-testnet", "celo-sepolia", "ethereum", "polygon", "bsc", "optimism", "arbitrum", "base", "zora", "arbitrumnova", "apechain", "mantle", "skale-nebula", "sei-pacific-1", "chiliz", "avalanche", "shape", "scroll", "space", "story", "abstract", "flow", "tempo", "robinhood-chain", "celo", "arc" ], "description": "The chain on which the signature will be submitted" } }, "required": ["call", "chain"], "description": "EVM MPC wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "call": { "type": "object", "properties": { "to": { "type": "string", "description": "The recipient address for this transaction call" }, "data": { "description": "The encoded calldata for this transaction" } }, "required": ["to", "data"] }, "txId": { "type": "string", "description": "WebAuthn authenticator data as hex string" }, "explorerLink": { "type": "string" } }, "required": ["call"], "description": "EVM MPC wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the signer that's pending approval" }, "message": { "type": "string", "description": "The message that needs to be signed" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "message"] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "signer": { "type": "string", "description": "The locator of the signer" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signature", "submittedAt", "signer", "message"] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "type": "number" }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] } }, "required": ["walletType", "params", "onChain", "id", "status", "createdAt"], "title": "EVM MPC transaction response" }, { "type": "object", "properties": { "walletType": { "type": "string", "description": "The type of wallet that created this transaction", "enum": ["solana-smart-wallet"] }, "params": { "type": "object", "properties": { "transaction": { "type": "string", "description": "Base58 encoded serialized Solana transaction", "example": "4hXTCkRzt9WyecNzV1XPgCDfGAZzQKNxLXgynz5QDuWWPSAZBZSHptvWRL3BjCvzUXRdKvHL2b7yGrRQcWyaqsaBCncVG7BFggS8w9snUts67BSh3EqKpXLUm5UMHfD7ZBe9GhARjbNQMLJ1QD3Spr6oMTBU6EhdB4RD8CP2xUxr2u3d6fos36PD98XS6oX8TQjLpsMwncs5DAMiD4nNnR8NBfyghGCWvCVifVwvA8B8TJxE1aiyiv2L429BCWfyzAme5sZW8rDb14NeCQHhZbtNqfXhcp2tAnaAT" }, "requiredSigners": { "description": "Optional array of additional signers required for the transaction", "type": "array", "items": { "type": "string", "description": "The locator of the signer" } }, "signer": { "description": "The locator for the signer who will submit this transaction. Defaults to the admin signer.", "type": "string" }, "feeConfig": { "anyOf": [ { "type": "object", "properties": { "feePayer": { "type": "string", "description": "The address that will pay for the transaction" }, "token": { "type": "string", "enum": ["sol", "usdc", "usdt"], "description": "The token to use for the fee" }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": ["feePayer", "token", "amount"] }, { "type": "object", "properties": { "feePayer": { "type": "string", "enum": ["crossmint"] }, "amount": { "type": "string", "description": "The amount of the fee" } }, "required": ["feePayer", "amount"] } ] } }, "required": ["transaction", "feeConfig"], "description": "Solana smart wallet transaction parameters" }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": ["awaiting-approval", "pending", "failed", "success"], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the signer that's pending approval" }, "message": { "type": "string", "description": "The message that needs to be signed" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signer", "message"] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "signer": { "type": "string", "description": "The locator of the signer" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member that's pending approval" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": ["signer", "message"] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "type": "string", "description": "The locator of the quorum member who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "description": "ISO timestamp when the signature was created", "type": "number" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": ["threshold", "remaining", "pending", "submitted"], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": ["signature", "submittedAt", "signer", "message"] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "description": "ISO timestamp when the signature was created", "type": "number" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "type": "number" }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": ["recipient", "recipientAddress"], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] } }, "required": ["walletType", "params", "onChain", "id", "status", "createdAt"], "title": "Solana smart wallet transaction response" } ] }, "WalletV1Alpha2ErrorDTO": { "type": "object", "properties": { "error": { "type": "boolean", "enum": [true] }, "message": { "type": "string", "description": "Error message", "example": "" }, "code": { "description": "Optional stable error code identifying the specific failure case. Present when the backend raises a structured error that consumers may want to detect programmatically.", "type": "string" } }, "required": ["error", "message"] }, "WalletV1Alpha2TransactionErrorDTO": { "type": "object", "properties": { "error": { "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": ["failed_to_land_on_chain"] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": ["sanctioned_wallet_address"] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": ["contract_call"] }, { "type": "string", "enum": ["wallet_authorization"] }, { "type": "string", "enum": ["wallet_deployment"] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ], "description": "Error" }, "message": { "type": "string", "description": "Error message" } }, "required": ["error", "message"] }, "WalletV2025ResponseDTOClass": { "oneOf": [ { "type": "object", "properties": { "chainType": { "type": "string", "description": "The blockchain type of the wallet", "enum": ["evm"] }, "type": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)", "example": "smart" }, "config": { "description": "EVM wallet type specific configuration settings", "type": "object", "properties": { "adminSigner": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string", "description": "The Solana address of the signer" }, { "type": "string" } ], "description": "The blockchain address of the custodial signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access." }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" }, "validatorContractVersion": { "type": "string", "description": "ERC-7579 webAuthn validator contract version" }, "locator": { "type": "string", "description": "Unique identifier for locating this passkey signer" } }, "required": [ "type", "id", "name", "publicKey", "validatorContractVersion", "locator" ], "description": "Response schema for a registered Passkey signer including validator contract details", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" }, "validatorContractVersion": "0.2.0", "locator": "passkey:cWtP7gmZbd98HbKUuGXx5Q" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" } ] }, "delegatedSigners": { "description": "Optional array of additional signers for the wallet", "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" }, "scopes": { "description": "Permission scopes granted to this delegated signer", "type": "array", "items": {} }, "expiresAt": { "description": "ISO timestamp of when the delegated signer expires", "type": "string" }, "chains": { "description": "Per-chain configuration for the delegated signer", "type": "object", "additionalProperties": true } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" }, "scopes": { "description": "Permission scopes granted to this delegated signer", "type": "array", "items": {} }, "expiresAt": { "description": "ISO timestamp of when the delegated signer expires", "type": "string" }, "chains": { "description": "Per-chain configuration for the delegated signer", "type": "object", "additionalProperties": true } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string", "description": "The Solana address of the signer" }, { "type": "string" } ], "description": "The blockchain address of the custodial signer" }, "locator": { "description": "The locator of the signer", "type": "string" }, "scopes": { "description": "Permission scopes granted to this delegated signer", "type": "array", "items": {} }, "expiresAt": { "description": "ISO timestamp of when the delegated signer expires", "type": "string" }, "chains": { "description": "Per-chain configuration for the delegated signer", "type": "object", "additionalProperties": true } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access." }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" }, "validatorContractVersion": { "type": "string", "description": "ERC-7579 webAuthn validator contract version" }, "locator": { "type": "string", "description": "Unique identifier for locating this passkey signer" }, "scopes": { "description": "Permission scopes granted to this delegated signer", "type": "array", "items": {} }, "expiresAt": { "description": "ISO timestamp of when the delegated signer expires", "type": "string" }, "chains": { "description": "Per-chain configuration for the delegated signer", "type": "object", "additionalProperties": true } }, "required": [ "type", "id", "name", "publicKey", "validatorContractVersion", "locator" ], "description": "Response schema for a registered Passkey signer including validator contract details", "title": "Passkey Signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" }, "scopes": { "description": "Permission scopes granted to this delegated signer", "type": "array", "items": {} }, "expiresAt": { "description": "ISO timestamp of when the delegated signer expires", "type": "string" }, "chains": { "description": "Per-chain configuration for the delegated signer", "type": "object", "additionalProperties": true } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" }, "scopes": { "description": "Permission scopes granted to this delegated signer", "type": "array", "items": {} }, "expiresAt": { "description": "ISO timestamp of when the delegated signer expires", "type": "string" }, "chains": { "description": "Per-chain configuration for the delegated signer", "type": "object", "additionalProperties": true } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for device signer type", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "The x coordinate of the p256 public key" }, "y": { "type": "string", "description": "The y coordinate of the p256 public key" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "description": "The locator of the signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "scopes": { "description": "Permission scopes granted to this delegated signer", "type": "array", "items": {} }, "expiresAt": { "description": "ISO timestamp of when the delegated signer expires", "type": "string" }, "chains": { "description": "Per-chain configuration for the delegated signer", "type": "object", "additionalProperties": true } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Configuration for a device signer" } ] } } }, "required": ["adminSigner"] }, "address": { "type": "string", "description": "The onchain address of the wallet", "example": "0x1234567890123456789012345678901234567890" }, "owner": { "description": "The user that owns this wallet in format :", "type": "string", "example": "email:test@example.com" }, "createdAt": { "description": "ISO timestamp of when the wallet was created", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "alias": { "description": "The wallet alias", "type": "string", "example": "my-usdc-wallet" } }, "required": ["chainType", "type", "address"], "title": "EVM wallet output" }, { "type": "object", "properties": { "chainType": { "type": "string", "description": "The blockchain type of the wallet", "enum": ["solana"] }, "type": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)", "example": "smart" }, "config": { "description": "Solana wallet type specific configuration settings", "type": "object", "properties": { "adminSigner": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string", "description": "The Solana address of the signer" }, { "type": "string" } ], "description": "The blockchain address of the custodial signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access." }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "threshold": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "locator": { "type": "string", "pattern": "^quorum:[0-9a-f]{8}-[0-9a-f]{4}-8[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", "description": "The locator of the quorum signer (read-only, derived from threshold + members)" }, "signers": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" } ] } } }, "required": ["type", "threshold", "locator", "signers"], "description": "Quorum (m-of-n multisig) admin signer" } ], "description": "@deprecated Use `recoveryMethods` instead. The wallet's first admin signer." }, "recoveryMethods": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string", "description": "The Solana address of the signer" }, { "type": "string" } ], "description": "The blockchain address of the custodial signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access." }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "threshold": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "locator": { "type": "string", "pattern": "^quorum:[0-9a-f]{8}-[0-9a-f]{4}-8[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", "description": "The locator of the quorum signer (read-only, derived from threshold + members)" }, "signers": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": [ "type", "email", "locator", "address" ], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": [ "type", "phone", "locator", "address" ], "title": "Phone Signer", "description": "Configuration for a phone signer" } ] } } }, "required": ["type", "threshold", "locator", "signers"], "description": "Quorum (m-of-n multisig) admin signer" } ] }, "description": "Every admin signer of the wallet; each of them can authorize on its own." }, "delegatedSigners": { "description": "Optional array of additional signers for the wallet", "type": "array", "items": { "allOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" }, "validatorContractVersion": { "type": "string", "description": "ERC-7579 webAuthn validator contract version" }, "locator": { "type": "string", "description": "Unique identifier for locating this passkey signer" } }, "required": [ "type", "id", "name", "publicKey", "validatorContractVersion", "locator" ], "description": "Response schema for a registered Passkey signer including validator contract details", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" }, "validatorContractVersion": "0.2.0", "locator": "passkey:cWtP7gmZbd98HbKUuGXx5Q" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string", "description": "The Solana address of the signer" }, { "type": "string" } ], "description": "The blockchain address of the custodial signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access." }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for device signer type", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "The x coordinate of the p256 public key" }, "y": { "type": "string", "description": "The y coordinate of the p256 public key" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "description": "The locator of the signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Configuration for a device signer" } ], "description": "Response schema for a registered signer" }, { "type": "object", "properties": { "scopes": { "description": "Optional array of scopes restricting the signer's capabilities", "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["transfer"] }, "tokenLocator": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } }, "spendingLimit": { "type": "object", "properties": { "amount": { "type": "string" }, "interval": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 } }, "required": ["amount"] } }, "required": ["type", "tokenLocator"], "title": "Transfer", "description": "Scope to transfer tokens with optional spending limits and recipient restrictions", "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "recipients": [ "GDUCX62IF76FFIYRNI25LJDS2V43QEZDY4YNF2DJWVIASN5LKX76Q4TW" ], "spendingLimit": { "amount": "100", "interval": 86400 } } }, "example": { "type": "transfer", "tokenLocator": "solana:sol", "spendingLimit": { "amount": "1" } } }, "expiresAt": { "description": "The expiry date of the signer in ISO 8601 format", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "transaction": { "description": "The transaction for the signer", "type": "object", "properties": { "chainType": { "type": "string", "enum": ["solana"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "txId": { "type": "string" }, "proxiedTxId": { "type": "string" }, "explorerLink": { "type": "string" } }, "required": ["transaction"], "description": "Solana custodial wallet transaction data including input parameters and chain specific details" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": [ "signer", "message" ] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": [ "failed_to_land_on_chain" ] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": [ "contract_call" ] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": [ "recipient", "recipientAddress" ], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": [ "user-native", "user-fungible", "project" ] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "pending", "settled", "failed" ] } }, "required": ["status"] } }, "required": ["mode"] }, "walletType": { "type": "string", "enum": ["smart"] } }, "required": [ "chainType", "onChain", "id", "status", "createdAt", "walletType" ] } } } ], "title": "Solana Delegated Signer Response", "description": "Complete delegated signer response including the signer and authorization transaction" } } }, "required": ["adminSigner", "recoveryMethods"] }, "address": { "type": "string", "description": "The onchain address of the wallet", "example": "0x1234567890123456789012345678901234567890" }, "owner": { "description": "The user that owns this wallet in format :", "type": "string", "example": "email:test@example.com" }, "createdAt": { "description": "ISO timestamp of when the wallet was created", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "alias": { "description": "The wallet alias", "type": "string", "example": "my-usdc-wallet" } }, "required": ["chainType", "type", "address"], "title": "Solana wallet output" }, { "type": "object", "properties": { "chainType": { "type": "string", "description": "The blockchain type of the wallet", "enum": ["aptos"] }, "type": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)", "example": "smart" }, "config": { "description": "Aptos wallet type specific configuration settings" }, "address": { "type": "string", "description": "The onchain address of the wallet", "example": "0x1234567890123456789012345678901234567890" }, "owner": { "description": "The user that owns this wallet in format :", "type": "string", "example": "email:test@example.com" }, "createdAt": { "description": "ISO timestamp of when the wallet was created", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "alias": { "description": "The wallet alias", "type": "string", "example": "my-usdc-wallet" } }, "required": ["chainType", "type", "address"], "title": "Aptos wallet output" }, { "type": "object", "properties": { "chainType": { "type": "string", "description": "The blockchain type of the wallet", "enum": ["sui"] }, "type": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)", "example": "smart" }, "config": { "description": "Sui wallet type specific configuration settings" }, "address": { "type": "string", "description": "The onchain address of the wallet", "example": "0x1234567890123456789012345678901234567890" }, "owner": { "description": "The user that owns this wallet in format :", "type": "string", "example": "email:test@example.com" }, "createdAt": { "description": "ISO timestamp of when the wallet was created", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "alias": { "description": "The wallet alias", "type": "string", "example": "my-usdc-wallet" } }, "required": ["chainType", "type", "address"], "title": "Sui wallet output" }, { "type": "object", "properties": { "chainType": { "type": "string", "description": "The blockchain type of the wallet", "enum": ["stellar"] }, "type": { "type": "string", "enum": ["smart", "mpc"], "description": "The wallet type (smart or mpc)", "example": "smart" }, "config": { "description": "Stellar wallet type specific configuration settings", "type": "object", "properties": { "adminSigner": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string", "description": "The Solana address of the signer" }, { "type": "string" } ], "description": "The blockchain address of the custodial signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access." }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "threshold": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "locator": { "type": "string", "pattern": "^quorum:[0-9a-f]{8}-[0-9a-f]{4}-8[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", "description": "The locator of the quorum signer (read-only, derived from threshold + members)" }, "signers": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" } ] } } }, "required": ["type", "threshold", "locator", "signers"], "description": "Quorum (m-of-n multisig) admin signer" } ], "description": "@deprecated Use `recoveryMethods` instead. The wallet's first admin signer." }, "recoveryMethods": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string", "description": "The Solana address of the signer" }, { "type": "string" } ], "description": "The blockchain address of the custodial signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access." }, { "type": "object", "properties": { "type": { "type": "string", "enum": ["quorum"] }, "threshold": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 }, "locator": { "type": "string", "pattern": "^quorum:[0-9a-f]{8}-[0-9a-f]{4}-8[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$", "description": "The locator of the quorum signer (read-only, derived from threshold + members)" }, "signers": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": [ "type", "email", "locator", "address" ], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": [ "type", "phone", "locator", "address" ], "title": "Phone Signer", "description": "Configuration for a phone signer" } ] } } }, "required": ["type", "threshold", "locator", "signers"], "description": "Quorum (m-of-n multisig) admin signer" } ] }, "description": "Every admin signer of the wallet; each of them can authorize on its own." }, "delegatedSigners": { "description": "Optional array of additional signers for the wallet", "type": "array", "items": { "allOf": [ { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for the Passkey signer type", "enum": ["passkey"] }, "id": { "type": "string", "description": "Credential ID from the WebAuthn registration response" }, "name": { "type": "string", "description": "Human-readable name for the passkey" }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "S component of the signature as a stringified bigint" }, "y": { "type": "string", "description": "S component of the signature as a stringified bigint" } }, "required": ["x", "y"], "description": "The public key coordinates from the WebAuthn credential" }, "validatorContractVersion": { "type": "string", "description": "ERC-7579 webAuthn validator contract version" }, "locator": { "type": "string", "description": "Unique identifier for locating this passkey signer" } }, "required": [ "type", "id", "name", "publicKey", "validatorContractVersion", "locator" ], "description": "Response schema for a registered Passkey signer including validator contract details", "title": "Passkey Signer", "example": { "type": "passkey", "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" }, "validatorContractVersion": "0.2.0", "locator": "passkey:cWtP7gmZbd98HbKUuGXx5Q" } }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for API key signer type", "enum": ["api-key"] }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string", "description": "The Solana address of the signer" }, { "type": "string" } ], "description": "The blockchain address of the custodial signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "API Key Signer", "description": "Configuration for a custodial signer managed by Crossmint. Contact sales (https://www.crossmint.com/contact/sales) for access." }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for external wallet signer type", "enum": ["external-wallet"] }, "address": { "type": "string", "description": "The blockchain address of the external wallet" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "External Wallet Signer", "description": "Configuration for an external wallet signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for server signer type", "enum": ["server"] }, "address": { "type": "string", "description": "The blockchain address of the server signer" }, "locator": { "description": "The locator of the signer", "type": "string" } }, "required": ["type", "address", "locator"], "title": "Server Signer", "description": "Configuration for a server signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for email signer type", "enum": ["email"] }, "email": { "description": "The email address for the signer", "type": "string" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "email", "locator", "address"], "title": "Email Signer", "description": "Configuration for an email signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for phone signer type", "enum": ["phone"] }, "phone": { "type": "string", "description": "The phone number for the signer in E164 format" }, "locator": { "description": "The locator of the signer", "type": "string" }, "address": { "anyOf": [ { "type": "string", "description": "The recipient address for this transaction call" }, { "type": "string" } ], "description": "The address of the signer" } }, "required": ["type", "phone", "locator", "address"], "title": "Phone Signer", "description": "Configuration for a phone signer" }, { "type": "object", "properties": { "type": { "type": "string", "description": "Identifier for device signer type", "enum": ["device"] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string", "description": "The x coordinate of the p256 public key" }, "y": { "type": "string", "description": "The y coordinate of the p256 public key" } }, "required": ["x", "y"], "description": "The p256 public key of the device signer" }, "locator": { "description": "The locator of the signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": ["type", "publicKey", "locator"], "title": "Device Signer", "description": "Configuration for a device signer" } ], "description": "Response schema for a registered signer" }, { "type": "object", "properties": { "scopes": { "description": "Optional array of scopes restricting the signer's capabilities", "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": ["transfer"] }, "tokenLocator": { "type": "string" }, "recipients": { "type": "array", "items": { "type": "string" } }, "spendingLimit": { "type": "object", "properties": { "amount": { "type": "string" }, "interval": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 } }, "required": ["amount"] } }, "required": ["type", "tokenLocator"], "title": "Transfer", "description": "Scope to transfer tokens with optional spending limits and recipient restrictions", "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "recipients": [ "GDUCX62IF76FFIYRNI25LJDS2V43QEZDY4YNF2DJWVIASN5LKX76Q4TW" ], "spendingLimit": { "amount": "100", "interval": 86400 } } }, "example": { "type": "transfer", "tokenLocator": "stellar:usdc", "spendingLimit": { "amount": "100" } } }, "expiresAt": { "description": "The expiry date of the signer in ISO 8601 format", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "transaction": { "description": "The transaction for the signer", "type": "object", "properties": { "chainType": { "type": "string", "enum": ["stellar"] }, "onChain": { "type": "object", "properties": { "transaction": { "type": "object", "properties": { "method": { "type": "string" }, "tx": { "type": "string" } }, "required": ["method", "tx"], "title": "Stellar on-chain transaction", "description": "The Stellar Transaction Envelope" }, "txId": { "description": "The transaction hash", "type": "string" }, "ledger": { "description": "The ledger number where the transaction was included", "type": "number" }, "expiration": { "type": "number", "description": "The expiration of the transaction" }, "result": { "description": "The Transaction Result in XDR format" }, "explorerLink": { "description": "Optional link to view the transaction in an explorer", "type": "string" } }, "required": ["transaction", "expiration"], "title": "Stellar on-chain data" }, "id": { "type": "string", "description": "Unique identifier for the transaction" }, "status": { "type": "string", "enum": [ "awaiting-approval", "pending", "failed", "success" ], "description": "Current status of the transaction" }, "approvals": { "type": "object", "properties": { "pending": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that needs to be signed" } }, "required": [ "signer", "message" ] } ] }, "description": "List of pending signatures" }, "submitted": { "type": "array", "items": { "anyOf": [ { "type": "object", "properties": { "signer": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "quorum" ] }, "locator": { "type": "string", "description": "The derived `quorum:` locator of the quorum signer" } }, "required": [ "type", "locator" ], "description": "The quorum signer this approval entry belongs to" }, "quorumApprovals": { "type": "object", "properties": { "threshold": { "type": "number", "description": "Number of member approvals required to satisfy the quorum" }, "remaining": { "type": "number", "description": "Number of member approvals still outstanding to reach the threshold" }, "pending": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member needs to sign" } }, "required": [ "signer", "message" ] }, "description": "Quorum members that have not yet submitted" }, "submitted": { "type": "array", "items": { "type": "object", "properties": { "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that this member signed" }, "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" } }, "required": [ "signer", "message", "signature", "submittedAt" ] }, "description": "Quorum members that have already submitted" } }, "required": [ "threshold", "remaining", "pending", "submitted" ], "description": "Per-member progress of an m-of-n quorum signer" } }, "required": [ "signer", "quorumApprovals" ], "description": "Approval entry for a quorum (multisig) admin signer" }, { "type": "object", "properties": { "signature": { "type": "string", "description": "The cryptographic signature" }, "submittedAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "signer": { "oneOf": [ { "type": "object", "properties": { "type": { "type": "string", "enum": [ "external-wallet" ] }, "address": { "type": "string", "description": "The address of the external wallet" }, "locator": { "type": "string", "description": "The locator of the external wallet signer" } }, "required": [ "type", "address", "locator" ], "title": "External Wallet Signer", "description": "Full External Wallet signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "passkey" ] }, "id": { "type": "string", "description": "The ID of the passkey" }, "locator": { "type": "string", "description": "The locator of the passkey signer" } }, "required": [ "type", "id", "locator" ], "title": "Passkey Signer", "description": "Full Passkey signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "api-key" ] }, "address": { "type": "string", "description": "The address of the api key" }, "locator": { "type": "string", "description": "The locator of the api key signer" } }, "required": [ "type", "address", "locator" ], "title": "API Key Signer", "description": "Full API Key signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "device" ] }, "publicKey": { "type": "object", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "description": "The p256 public key of the device signer" }, "locator": { "type": "string", "description": "The locator of the device signer" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" } }, "required": [ "type", "publicKey", "locator" ], "title": "Device Signer", "description": "Full Device signer object" }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "email" ] }, "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,}$" }, "locator": { "type": "string" } }, "required": [ "type", "email", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "phone" ] }, "phone": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "phone", "locator" ] }, { "type": "object", "properties": { "type": { "type": "string", "enum": [ "server" ] }, "address": { "type": "string" }, "locator": { "type": "string" } }, "required": [ "type", "address", "locator" ] } ], "description": "The full signer object who submitted this signature" }, "message": { "type": "string", "description": "The message that was signed" }, "metadata": { "description": "Additional metadata about the signature submission", "type": "object", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } } } }, "required": [ "signature", "submittedAt", "signer", "message" ] } ] }, "description": "Record of all submitted signatures" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" } }, "required": ["pending", "submitted"], "description": "Complete approval data including requirements, pending and submitted signatures" }, "createdAt": { "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the signature was created" }, "completedAt": { "description": "ISO timestamp when the transaction reached finality", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "error": { "description": "Error message if the transaction fails after submission", "anyOf": [ { "type": "object", "properties": { "reason": { "anyOf": [ { "type": "string", "enum": ["build_failed"] }, { "type": "string", "enum": [ "failed_to_land_on_chain" ] }, { "type": "string", "enum": ["unknown"] }, { "type": "string", "enum": [ "sanctioned_wallet_address" ] } ] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true } }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["program_error"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "logs": {} }, "required": ["reason", "message"] }, { "type": "object", "properties": { "reason": { "type": "string", "enum": ["execution_reverted"] }, "message": { "type": "string" }, "revertData": { "type": "object", "additionalProperties": true }, "revert": { "type": "object", "description": "Revert reason from smart contract", "properties": { "type": { "anyOf": [ { "type": "string", "enum": [ "contract_call" ] }, { "type": "string", "enum": [ "wallet_authorization" ] }, { "type": "string", "enum": [ "wallet_deployment" ] } ] }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "type": "string" }, { "type": "object", "additionalProperties": true } ] }, "explorerLink": { "type": "string" }, "simulationLink": { "type": "string" } }, "required": ["type", "reason"], "example": { "type": "contract_call", "reason": "ERC20: transfer amount exceeds balance" } } }, "required": ["reason", "message"] } ] }, "sendParams": { "type": "object", "properties": { "token": { "type": "string", "description": "The token locator that's being sent" }, "params": { "type": "object", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "type": "string", "description": "The recipient locator for the token" }, "recipientAddress": { "type": "string", "description": "The recipient address for the token" } }, "required": [ "recipient", "recipientAddress" ], "description": "The parameters for the send token transaction" } }, "required": ["token", "params"] }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "type": "object", "properties": { "mode": { "type": "string", "enum": [ "user-native", "user-fungible", "project" ] }, "estimate": {}, "actual": {}, "billed": { "type": "object", "properties": { "usd": { "type": "number" } }, "required": ["usd"] }, "billing": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "pending", "settled", "failed" ] } }, "required": ["status"] } }, "required": ["mode"] }, "walletType": { "type": "string", "enum": ["smart"] } }, "required": [ "chainType", "onChain", "id", "status", "createdAt", "walletType" ] } } } ], "title": "Stellar Delegated Signer Response", "description": "Complete delegated signer response including the signer and authorization transaction" } }, "plugins": { "description": "Optional array of plugins used for the wallet", "type": "array", "items": { "type": "string" }, "example": "CA3SGE76PWYAM4OVKETY47GASUGYDF3Y3QFFSPIWFCNKQLUOO4SOIT2W" } }, "required": ["adminSigner", "recoveryMethods"] }, "address": { "type": "string", "description": "The onchain address of the wallet", "example": "0x1234567890123456789012345678901234567890" }, "owner": { "description": "The user that owns this wallet in format :", "type": "string", "example": "email:test@example.com" }, "createdAt": { "description": "ISO timestamp of when the wallet was created", "anyOf": [ { "description": "ISO timestamp when the signature was created", "type": "number" }, { "type": "string" } ] }, "alias": { "description": "The wallet alias", "type": "string", "example": "my-usdc-wallet" } }, "required": ["chainType", "type", "address"], "title": "Stellar wallet output" } ] }, "AddRecoveryMethodsV2025DTOClass": { "anyOf": [ { "description": "Parameters for adding EVM recovery methods", "properties": { "approver": { "description": "The recovery method that authorizes this operation.", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q", "title": "Signer Locator", "type": "string" }, "chain": { "description": "The chain where the recovery method will be registered. Accepts the smart-wallet-enabled EVM chains.", "enum": [ "abstract", "abstract-testnet", "apechain", "arbitrum", "arbitrum-sepolia", "arbitrumnova", "arc", "arc-testnet", "avalanche", "avalanche-fuji", "base", "base-sepolia", "bsc", "celo", "celo-sepolia", "curtis", "ethereum", "ethereum-sepolia", "flow", "flow-testnet", "mantle", "mantle-sepolia", "mode", "mode-sepolia", "optimism", "optimism-sepolia", "plume", "plume-testnet", "polygon", "polygon-amoy", "robinhood-chain", "robinhood-chain-testnet", "scroll", "scroll-sepolia", "sei-atlantic-2-testnet", "sei-pacific-1", "shape", "story", "story-testnet", "tempo", "tempo-testnet", "world-chain", "world-chain-sepolia", "zora", "zora-sepolia" ] }, "recoveryMethods": { "anyOf": [ { "description": "A signer locator that can be either a of format '' for external wallet type signers or ':'", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q", "title": "Signer Locator", "type": "string" }, { "oneOf": [ { "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "example": { "type": "api-key" }, "properties": { "type": { "description": "Identifier for API key signer type", "enum": ["api-key"], "type": "string" } }, "required": ["type"], "title": "API Key Signer", "type": "object" }, { "description": "A device signer that can be used as a delegated signer", "example": { "name": "my-device", "publicKey": { "x": "decimal_string_x", "y": "decimal_string_y" }, "type": "device" }, "properties": { "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "description": "The x coordinate of the p256 public key", "type": "string" }, "y": { "description": "The y coordinate of the p256 public key", "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "description": "Identifier for device signer type", "enum": ["device"], "type": "string" } }, "required": ["publicKey", "type"], "title": "Device Signer", "type": "object" }, { "description": "A server-managed blockchain signer", "example": { "address": "0x1234567890123456789012345678901234567890", "type": "server" }, "properties": { "address": { "description": "The blockchain address of the server signer", "type": "string" }, "type": { "description": "Identifier for server signer type", "enum": ["server"], "type": "string" } }, "required": ["address", "type"], "title": "Server Signer", "type": "object" }, { "description": "An email-based signer that can be used to sign transactions", "properties": { "email": { "description": "The email address for the signer", "type": "string" }, "type": { "description": "Identifier for email signer type", "enum": ["email"], "type": "string" } }, "required": ["email", "type"], "title": "Email Signer", "type": "object" }, { "description": "An external wallet that can be used to sign transactions", "example": { "address": "0x1234567890123456789012345678901234567890", "type": "external-wallet" }, "properties": { "address": { "description": "The blockchain address of the external wallet", "type": "string" }, "type": { "description": "Identifier for external wallet signer type", "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "An phone-based signer that can be used to sign transactions", "example": { "phone": "+1234567890", "type": "phone" }, "properties": { "phone": { "description": "The phone number for the signer in E164 format", "type": "string" }, "type": { "description": "Identifier for phone signer type", "enum": ["phone"], "type": "string" } }, "required": ["phone", "type"], "title": "Phone Signer", "type": "object" }, { "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "example": { "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" }, "type": "passkey" }, "properties": { "id": { "description": "Credential ID from the WebAuthn registration response, as unpadded base64url", "minLength": 1, "pattern": "^[A-Za-z0-9_-]+$", "type": "string" }, "name": { "description": "Human-readable name for the passkey", "type": "string" }, "publicKey": { "description": "The public key coordinates from the WebAuthn credential", "properties": { "x": { "description": "X coordinate of the public key as a decimal string", "type": "string" }, "y": { "description": "Y coordinate of the public key as a decimal string", "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "description": "Identifier for the Passkey signer type", "enum": ["passkey"], "type": "string" } }, "required": ["id", "name", "publicKey", "type"], "title": "Passkey Signer", "type": "object" } ] } ], "description": "The recovery method to add." } }, "required": ["approver", "chain", "recoveryMethods"], "title": "EVM", "type": "object" }, { "description": "Parameters for adding Solana recovery methods", "properties": { "approver": { "description": "The recovery method that authorizes this operation.", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q", "title": "Signer Locator", "type": "string" }, "recoveryMethods": { "anyOf": [ { "description": "A signer locator that can be either a of format '' for external wallet type signers or ':'", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q", "title": "Signer Locator", "type": "string" }, { "oneOf": [ { "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "example": { "type": "api-key" }, "properties": { "type": { "description": "Identifier for API key signer type", "enum": ["api-key"], "type": "string" } }, "required": ["type"], "title": "API Key Signer", "type": "object" }, { "description": "A device signer that can be used as a delegated signer", "example": { "name": "my-device", "publicKey": { "x": "decimal_string_x", "y": "decimal_string_y" }, "type": "device" }, "properties": { "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "description": "The x coordinate of the p256 public key", "type": "string" }, "y": { "description": "The y coordinate of the p256 public key", "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "description": "Identifier for device signer type", "enum": ["device"], "type": "string" } }, "required": ["publicKey", "type"], "title": "Device Signer", "type": "object" }, { "description": "A server-managed blockchain signer", "example": { "address": "0x1234567890123456789012345678901234567890", "type": "server" }, "properties": { "address": { "description": "The blockchain address of the server signer", "type": "string" }, "type": { "description": "Identifier for server signer type", "enum": ["server"], "type": "string" } }, "required": ["address", "type"], "title": "Server Signer", "type": "object" }, { "description": "An email-based signer that can be used to sign transactions", "properties": { "email": { "description": "The email address for the signer", "type": "string" }, "type": { "description": "Identifier for email signer type", "enum": ["email"], "type": "string" } }, "required": ["email", "type"], "title": "Email Signer", "type": "object" }, { "description": "An external wallet that can be used to sign transactions", "example": { "address": "0x1234567890123456789012345678901234567890", "type": "external-wallet" }, "properties": { "address": { "description": "The blockchain address of the external wallet", "type": "string" }, "type": { "description": "Identifier for external wallet signer type", "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "An phone-based signer that can be used to sign transactions", "example": { "phone": "+1234567890", "type": "phone" }, "properties": { "phone": { "description": "The phone number for the signer in E164 format", "type": "string" }, "type": { "description": "Identifier for phone signer type", "enum": ["phone"], "type": "string" } }, "required": ["phone", "type"], "title": "Phone Signer", "type": "object" }, { "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "example": { "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" }, "type": "passkey" }, "properties": { "id": { "description": "Credential ID from the WebAuthn registration response, as unpadded base64url", "minLength": 1, "pattern": "^[A-Za-z0-9_-]+$", "type": "string" }, "name": { "description": "Human-readable name for the passkey", "type": "string" }, "publicKey": { "description": "The public key coordinates from the WebAuthn credential", "properties": { "x": { "description": "X coordinate of the public key as a decimal string", "type": "string" }, "y": { "description": "Y coordinate of the public key as a decimal string", "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "description": "Identifier for the Passkey signer type", "enum": ["passkey"], "type": "string" } }, "required": ["id", "name", "publicKey", "type"], "title": "Passkey Signer", "type": "object" } ] } ], "description": "The recovery method to add." } }, "required": ["approver", "recoveryMethods"], "title": "Solana", "type": "object" }, { "description": "Parameters for adding Stellar recovery methods", "properties": { "approver": { "description": "The recovery method that authorizes this operation.", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q", "title": "Signer Locator", "type": "string" }, "recoveryMethods": { "anyOf": [ { "description": "A signer locator that can be either a of format '' for external wallet type signers or ':'", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q", "title": "Signer Locator", "type": "string" }, { "oneOf": [ { "description": "A custodial signer provided by Crossmint and backed by our secure infrastructure. Contact sales (https://www.crossmint.com/contact/sales) for access.", "example": { "type": "api-key" }, "properties": { "type": { "description": "Identifier for API key signer type", "enum": ["api-key"], "type": "string" } }, "required": ["type"], "title": "API Key Signer", "type": "object" }, { "description": "A device signer that can be used as a delegated signer", "example": { "name": "my-device", "publicKey": { "x": "decimal_string_x", "y": "decimal_string_y" }, "type": "device" }, "properties": { "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "description": "The x coordinate of the p256 public key", "type": "string" }, "y": { "description": "The y coordinate of the p256 public key", "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "description": "Identifier for device signer type", "enum": ["device"], "type": "string" } }, "required": ["publicKey", "type"], "title": "Device Signer", "type": "object" }, { "description": "A server-managed blockchain signer", "example": { "address": "0x1234567890123456789012345678901234567890", "type": "server" }, "properties": { "address": { "description": "The blockchain address of the server signer", "type": "string" }, "type": { "description": "Identifier for server signer type", "enum": ["server"], "type": "string" } }, "required": ["address", "type"], "title": "Server Signer", "type": "object" }, { "description": "An email-based signer that can be used to sign transactions", "properties": { "email": { "description": "The email address for the signer", "type": "string" }, "type": { "description": "Identifier for email signer type", "enum": ["email"], "type": "string" } }, "required": ["email", "type"], "title": "Email Signer", "type": "object" }, { "description": "An external wallet that can be used to sign transactions", "example": { "address": "0x1234567890123456789012345678901234567890", "type": "external-wallet" }, "properties": { "address": { "description": "The blockchain address of the external wallet", "type": "string" }, "type": { "description": "Identifier for external wallet signer type", "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "An phone-based signer that can be used to sign transactions", "example": { "phone": "+1234567890", "type": "phone" }, "properties": { "phone": { "description": "The phone number for the signer in E164 format", "type": "string" }, "type": { "description": "Identifier for phone signer type", "enum": ["phone"], "type": "string" } }, "required": ["phone", "type"], "title": "Phone Signer", "type": "object" }, { "description": "Configuration for a WebAuthn/Passkey signer that uses public key credentials for authentication", "example": { "id": "cWtP7gmZbd98HbKUuGXx5Q", "name": "hgranger", "publicKey": { "x": "38035223810536273945556366218149112558607829411547667975304293530457502824247", "y": "91117823763706733837104303008228095481082989039135234750508288790583476078729" }, "type": "passkey" }, "properties": { "id": { "description": "Credential ID from the WebAuthn registration response, as unpadded base64url", "minLength": 1, "pattern": "^[A-Za-z0-9_-]+$", "type": "string" }, "name": { "description": "Human-readable name for the passkey", "type": "string" }, "publicKey": { "description": "The public key coordinates from the WebAuthn credential", "properties": { "x": { "description": "X coordinate of the public key as a decimal string", "type": "string" }, "y": { "description": "Y coordinate of the public key as a decimal string", "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "description": "Identifier for the Passkey signer type", "enum": ["passkey"], "type": "string" } }, "required": ["id", "name", "publicKey", "type"], "title": "Passkey Signer", "type": "object" } ] } ], "description": "The recovery method to add." } }, "required": ["approver", "recoveryMethods"], "title": "Stellar", "type": "object" } ] }, "AddRecoveryMethodsResponseV2025DTOClass": { "properties": { "recoveryMethods": { "description": "The recovery method being added, with its resolved locator.", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": ["locator", "publicKey", "type"], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] }, "tx": { "anyOf": [ { "properties": { "approvals": { "description": "Complete approval data including requirements, pending and submitted signatures", "properties": { "pending": { "description": "List of pending signatures", "items": { "anyOf": [ { "description": "Approval entry for a quorum (multisig) admin signer", "properties": { "quorumApprovals": { "description": "Per-member progress of an m-of-n quorum signer", "properties": { "pending": { "description": "Quorum members that have not yet submitted", "items": { "properties": { "message": { "description": "The message that this member needs to sign", "type": "string" }, "signer": { "description": "The full signer object of the quorum member that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" }, "type": "array" }, "remaining": { "description": "Number of member approvals still outstanding to reach the threshold", "type": "number" }, "submitted": { "description": "Quorum members that have already submitted", "items": { "properties": { "message": { "description": "The message that this member signed", "type": "string" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object of the quorum member who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the member signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" }, "type": "array" }, "threshold": { "description": "Number of member approvals required to satisfy the quorum", "type": "number" } }, "required": [ "pending", "remaining", "submitted", "threshold" ], "type": "object" }, "signer": { "description": "The quorum signer this approval entry belongs to", "properties": { "locator": { "description": "The derived `quorum:` locator of the quorum signer", "type": "string" }, "type": { "enum": ["quorum"], "type": "string" } }, "required": ["locator", "type"], "title": "Quorum Signer Reference", "type": "object" } }, "required": ["quorumApprovals", "signer"], "type": "object" }, { "properties": { "message": { "description": "The message that needs to be signed", "type": "string" }, "signer": { "description": "The full signer object that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" } ] }, "type": "array" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" }, "submitted": { "description": "Record of all submitted signatures", "items": { "anyOf": [ { "description": "Approval entry for a quorum (multisig) admin signer", "properties": { "quorumApprovals": { "description": "Per-member progress of an m-of-n quorum signer", "properties": { "pending": { "description": "Quorum members that have not yet submitted", "items": { "properties": { "message": { "description": "The message that this member needs to sign", "type": "string" }, "signer": { "description": "The full signer object of the quorum member that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" }, "type": "array" }, "remaining": { "description": "Number of member approvals still outstanding to reach the threshold", "type": "number" }, "submitted": { "description": "Quorum members that have already submitted", "items": { "properties": { "message": { "description": "The message that this member signed", "type": "string" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object of the quorum member who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the member signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" }, "type": "array" }, "threshold": { "description": "Number of member approvals required to satisfy the quorum", "type": "number" } }, "required": [ "pending", "remaining", "submitted", "threshold" ], "type": "object" }, "signer": { "description": "The quorum signer this approval entry belongs to", "properties": { "locator": { "description": "The derived `quorum:` locator of the quorum signer", "type": "string" }, "type": { "enum": ["quorum"], "type": "string" } }, "required": ["locator", "type"], "title": "Quorum Signer Reference", "type": "object" } }, "required": ["quorumApprovals", "signer"], "type": "object" }, { "properties": { "message": { "description": "The message that was signed", "type": "string" }, "metadata": { "description": "Additional metadata about the signature submission", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } }, "type": "object" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" } ] }, "type": "array" } }, "required": ["pending", "submitted"], "type": "object" }, "chainType": { "description": "The blockchain type of the wallet", "enum": ["aptos", "evm", "solana", "stellar", "sui"], "type": "string" }, "completedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the transaction reached finality" }, "createdAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the transaction was created" }, "error": { "anyOf": [ { "properties": { "logs": {}, "message": { "type": "string" }, "reason": { "enum": ["program_error"], "type": "string" }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" }, { "properties": { "message": { "type": "string" }, "reason": { "anyOf": [ { "enum": ["build_failed"], "type": "string" }, { "enum": ["failed_to_land_on_chain"], "type": "string" }, { "enum": ["sanctioned_wallet_address"], "type": "string" }, { "enum": ["unknown"], "type": "string" } ] }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" }, { "properties": { "message": { "type": "string" }, "reason": { "enum": ["execution_reverted"], "type": "string" }, "revert": { "properties": { "explorerLink": { "type": "string" }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "string" } ] }, "simulationLink": { "type": "string" }, "type": { "anyOf": [ { "enum": ["contract_call"], "type": "string" }, { "enum": ["wallet_authorization"], "type": "string" }, { "enum": ["wallet_deployment"], "type": "string" } ] } }, "required": ["reason", "type"], "type": "object" }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" } ], "description": "Error message if the transaction fails after submission" }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "properties": { "actual": {}, "billed": { "properties": { "usd": { "type": "number" } }, "required": ["usd"], "type": "object" }, "billing": { "properties": { "status": { "enum": ["failed", "pending", "settled"], "type": "string" } }, "required": ["status"], "type": "object" }, "estimate": {}, "mode": { "enum": ["project", "user-fungible", "user-native"], "type": "string" } }, "required": ["mode"], "type": "object" }, "id": { "description": "Unique identifier for the transaction", "type": "string" }, "onChain": { "description": "Transaction data specific to EVM MPC wallets", "properties": { "call": { "properties": { "data": { "description": "The encoded calldata for this transaction" }, "to": { "description": "The recipient address for this transaction call", "type": "string" } }, "required": ["data", "to"], "type": "object" }, "explorerLink": { "type": "string" }, "txId": { "description": "A hex string", "type": "string" } }, "required": ["call"], "title": "EVM MPC wallet transaction data", "type": "object" }, "params": { "properties": { "call": { "anyOf": [ { "additionalProperties": false, "properties": { "abi": { "description": "The ABI for the function to call", "items": {}, "type": "array" }, "address": { "description": "The recipient address for this transaction call", "type": "string" }, "args": { "description": "The arguments to pass to the function", "items": {}, "type": "array" }, "functionName": { "description": "The name of the function to call", "type": "string" } }, "required": ["abi", "address", "args", "functionName"], "type": "object" }, { "additionalProperties": false, "properties": { "data": { "description": "The encoded calldata for this transaction" }, "to": { "description": "The recipient address for this transaction call", "type": "string" } }, "required": ["data", "to"], "type": "object" } ], "description": "The transaction call to execute" }, "chain": { "description": "The chain on which the transaction will be executed", "enum": [ "abstract", "abstract-testnet", "apechain", "arbitrum", "arbitrum-sepolia", "arbitrumnova", "arc", "arc-testnet", "astar-zkevm", "avalanche", "avalanche-fuji", "base", "base-goerli", "base-sepolia", "bsc", "bsc-testnet", "celo", "celo-sepolia", "chiliz", "chiliz-spicy-testnet", "crossmint-private-testnet-ethereum", "crossmint-private-testnet-polygon", "curtis", "ethereum", "ethereum-goerli", "ethereum-sepolia", "flow", "flow-testnet", "hedera", "hedera-testnet", "hypersonic-testnet", "lightlink", "lightlink-pegasus", "mantle", "mantle-sepolia", "mode", "mode-sepolia", "optimism", "optimism-goerli", "optimism-sepolia", "plume", "plume-testnet", "polygon", "polygon-amoy", "polygon-mumbai", "rari", "rari-testnet", "robinhood-chain", "robinhood-chain-testnet", "scroll", "scroll-sepolia", "sei-atlantic-2-testnet", "sei-pacific-1", "shape", "shape-sepolia", "skale-nebula", "skale-nebula-testnet", "soneium", "soneium-minato-testnet", "space", "space-testnet", "story", "story-testnet", "tempo", "tempo-testnet", "u2u-nebulas", "u2u-solaris", "verify-testnet", "viction", "viction-testnet", "world-chain", "world-chain-sepolia", "xai", "xai-sepolia-testnet", "zenchain-testnet", "zkatana", "zkyoto", "zora", "zora-goerli", "zora-sepolia" ], "type": "string" } }, "required": ["call", "chain"], "type": "object" }, "sendParams": { "properties": { "params": { "description": "The parameters for the send token transaction", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "description": "The recipient locator for the token", "type": "string" }, "recipientAddress": { "description": "The recipient address for the token", "type": "string" } }, "required": ["recipient", "recipientAddress"], "type": "object" }, "token": { "description": "The token locator that's being sent", "type": "string" } }, "required": ["params", "token"], "type": "object" }, "status": { "description": "Current status of the transaction", "enum": ["awaiting-approval", "failed", "pending", "success"], "type": "string" }, "walletType": { "description": "The wallet type (smart or mpc)", "enum": ["mpc", "smart"], "type": "string" } }, "required": [ "chainType", "createdAt", "id", "onChain", "params", "status", "walletType" ], "title": "EVM MPC Wallet", "type": "object" }, { "properties": { "approvals": { "description": "Complete approval data including requirements, pending and submitted signatures", "properties": { "pending": { "description": "List of pending signatures", "items": { "anyOf": [ { "description": "Approval entry for a quorum (multisig) admin signer", "properties": { "quorumApprovals": { "description": "Per-member progress of an m-of-n quorum signer", "properties": { "pending": { "description": "Quorum members that have not yet submitted", "items": { "properties": { "message": { "description": "The message that this member needs to sign", "type": "string" }, "signer": { "description": "The full signer object of the quorum member that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" }, "type": "array" }, "remaining": { "description": "Number of member approvals still outstanding to reach the threshold", "type": "number" }, "submitted": { "description": "Quorum members that have already submitted", "items": { "properties": { "message": { "description": "The message that this member signed", "type": "string" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object of the quorum member who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the member signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" }, "type": "array" }, "threshold": { "description": "Number of member approvals required to satisfy the quorum", "type": "number" } }, "required": [ "pending", "remaining", "submitted", "threshold" ], "type": "object" }, "signer": { "description": "The quorum signer this approval entry belongs to", "properties": { "locator": { "description": "The derived `quorum:` locator of the quorum signer", "type": "string" }, "type": { "enum": ["quorum"], "type": "string" } }, "required": ["locator", "type"], "title": "Quorum Signer Reference", "type": "object" } }, "required": ["quorumApprovals", "signer"], "type": "object" }, { "properties": { "message": { "description": "The message that needs to be signed", "type": "string" }, "signer": { "description": "The full signer object that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" } ] }, "type": "array" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" }, "submitted": { "description": "Record of all submitted signatures", "items": { "anyOf": [ { "description": "Approval entry for a quorum (multisig) admin signer", "properties": { "quorumApprovals": { "description": "Per-member progress of an m-of-n quorum signer", "properties": { "pending": { "description": "Quorum members that have not yet submitted", "items": { "properties": { "message": { "description": "The message that this member needs to sign", "type": "string" }, "signer": { "description": "The full signer object of the quorum member that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" }, "type": "array" }, "remaining": { "description": "Number of member approvals still outstanding to reach the threshold", "type": "number" }, "submitted": { "description": "Quorum members that have already submitted", "items": { "properties": { "message": { "description": "The message that this member signed", "type": "string" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object of the quorum member who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the member signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" }, "type": "array" }, "threshold": { "description": "Number of member approvals required to satisfy the quorum", "type": "number" } }, "required": [ "pending", "remaining", "submitted", "threshold" ], "type": "object" }, "signer": { "description": "The quorum signer this approval entry belongs to", "properties": { "locator": { "description": "The derived `quorum:` locator of the quorum signer", "type": "string" }, "type": { "enum": ["quorum"], "type": "string" } }, "required": ["locator", "type"], "title": "Quorum Signer Reference", "type": "object" } }, "required": ["quorumApprovals", "signer"], "type": "object" }, { "properties": { "message": { "description": "The message that was signed", "type": "string" }, "metadata": { "description": "Additional metadata about the signature submission", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } }, "type": "object" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" } ] }, "type": "array" } }, "required": ["pending", "submitted"], "type": "object" }, "chainType": { "description": "The blockchain type of the wallet", "enum": ["aptos", "evm", "solana", "stellar", "sui"], "type": "string" }, "completedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the transaction reached finality" }, "createdAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the transaction was created" }, "error": { "anyOf": [ { "properties": { "logs": {}, "message": { "type": "string" }, "reason": { "enum": ["program_error"], "type": "string" }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" }, { "properties": { "message": { "type": "string" }, "reason": { "anyOf": [ { "enum": ["build_failed"], "type": "string" }, { "enum": ["failed_to_land_on_chain"], "type": "string" }, { "enum": ["sanctioned_wallet_address"], "type": "string" }, { "enum": ["unknown"], "type": "string" } ] }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" }, { "properties": { "message": { "type": "string" }, "reason": { "enum": ["execution_reverted"], "type": "string" }, "revert": { "properties": { "explorerLink": { "type": "string" }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "string" } ] }, "simulationLink": { "type": "string" }, "type": { "anyOf": [ { "enum": ["contract_call"], "type": "string" }, { "enum": ["wallet_authorization"], "type": "string" }, { "enum": ["wallet_deployment"], "type": "string" } ] } }, "required": ["reason", "type"], "type": "object" }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" } ], "description": "Error message if the transaction fails after submission" }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "properties": { "actual": {}, "billed": { "properties": { "usd": { "type": "number" } }, "required": ["usd"], "type": "object" }, "billing": { "properties": { "status": { "enum": ["failed", "pending", "settled"], "type": "string" } }, "required": ["status"], "type": "object" }, "estimate": {}, "mode": { "enum": ["project", "user-fungible", "user-native"], "type": "string" } }, "required": ["mode"], "type": "object" }, "id": { "description": "Unique identifier for the transaction", "type": "string" }, "onChain": { "description": "Transaction data specific to EVM smart wallets", "properties": { "explorerLink": { "type": "string" }, "proxiedTxId": { "description": "A hex string", "type": "string" }, "txId": { "description": "A hex string", "type": "string" }, "userOperation": { "properties": { "callData": { "description": "A hex string", "type": "string" }, "callGasLimit": { "description": "A hex string", "type": "string" }, "factory": { "description": "A hex string", "type": "string" }, "factoryData": { "description": "A hex string", "type": "string" }, "maxFeePerGas": { "description": "A hex string", "type": "string" }, "maxPriorityFeePerGas": { "description": "A hex string", "type": "string" }, "nonce": { "description": "A hex string", "type": "string" }, "paymaster": { "description": "A hex string", "type": "string" }, "paymasterData": { "description": "A hex string", "type": "string" }, "paymasterPostOpGasLimit": { "description": "A hex string", "type": "string" }, "paymasterVerificationGasLimit": { "description": "A hex string", "type": "string" }, "preVerificationGas": { "description": "A hex string", "type": "string" }, "sender": { "description": "A hex string", "type": "string" }, "signature": { "description": "A hex string", "type": "string" }, "verificationGasLimit": { "description": "A hex string", "type": "string" } }, "required": [ "callData", "callGasLimit", "maxFeePerGas", "maxPriorityFeePerGas", "nonce", "preVerificationGas", "sender", "signature", "verificationGasLimit" ], "type": "object" }, "userOperationHash": { "description": "A hex string", "type": "string" } }, "required": ["userOperation", "userOperationHash"], "title": "EVM smart wallet transaction data", "type": "object" }, "params": { "properties": { "calls": { "description": "Array of transaction calls to execute", "items": { "anyOf": [ { "description": "Parameters for a transaction to execute a contract function", "properties": { "abi": { "description": "The ABI for the function to call", "items": {}, "type": "array" }, "address": { "description": "The recipient address for this transaction call", "type": "string" }, "args": { "description": "The arguments to pass to the function", "items": {}, "type": "array" }, "functionName": { "description": "The name of the function to call", "type": "string" }, "value": { "default": "0", "description": "The amount of native token to send in wei", "type": "string" } }, "required": ["abi", "address", "args", "functionName"], "title": "EVM contract call transaction parameters", "type": "object" }, { "description": "Parameters for a transaction to send a direct calldata transaction", "properties": { "data": { "description": "The encoded calldata for this transaction" }, "to": { "description": "The recipient address for this transaction call", "type": "string" }, "value": { "description": "The amount of native token to send in wei", "type": "string" } }, "required": ["data", "to", "value"], "title": "EVM direct calldata transaction parameters", "type": "object" }, { "description": "Parameters for a transaction to send a serialized EVM transaction", "properties": { "transaction": { "description": "Serialized EVM transaction" } }, "required": ["transaction"], "title": "EVM serialized transaction parameters", "type": "object" } ], "description": "Transaction data to execute" }, "minItems": 1, "type": "array" }, "chain": { "description": "The chain on which the transaction will be executed", "enum": [ "abstract", "abstract-testnet", "apechain", "arbitrum", "arbitrum-sepolia", "arbitrumnova", "arc", "arc-testnet", "avalanche", "avalanche-fuji", "base", "base-sepolia", "bsc", "celo", "celo-sepolia", "curtis", "ethereum", "ethereum-sepolia", "flow", "flow-testnet", "mantle", "mantle-sepolia", "mode", "mode-sepolia", "optimism", "optimism-sepolia", "plume", "plume-testnet", "polygon", "polygon-amoy", "robinhood-chain", "robinhood-chain-testnet", "scroll", "scroll-sepolia", "sei-atlantic-2-testnet", "sei-pacific-1", "shape", "story", "story-testnet", "tempo", "tempo-testnet", "world-chain", "world-chain-sepolia", "zora", "zora-sepolia" ] }, "signer": { "description": "The full signer object who will submit this transaction", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": ["locator", "publicKey", "type"], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] } }, "required": ["calls", "chain"], "type": "object" }, "sendParams": { "properties": { "params": { "description": "The parameters for the send token transaction", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "description": "The recipient locator for the token", "type": "string" }, "recipientAddress": { "description": "The recipient address for the token", "type": "string" } }, "required": ["recipient", "recipientAddress"], "type": "object" }, "token": { "description": "The token locator that's being sent", "type": "string" } }, "required": ["params", "token"], "type": "object" }, "status": { "description": "Current status of the transaction", "enum": ["awaiting-approval", "failed", "pending", "success"], "type": "string" }, "walletType": { "description": "The wallet type (smart or mpc)", "enum": ["mpc", "smart"], "type": "string" } }, "required": [ "chainType", "createdAt", "id", "onChain", "params", "status", "walletType" ], "title": "EVM Smart Wallet", "type": "object" }, { "properties": { "approvals": { "description": "Complete approval data including requirements, pending and submitted signatures", "properties": { "pending": { "description": "List of pending signatures", "items": { "anyOf": [ { "description": "Approval entry for a quorum (multisig) admin signer", "properties": { "quorumApprovals": { "description": "Per-member progress of an m-of-n quorum signer", "properties": { "pending": { "description": "Quorum members that have not yet submitted", "items": { "properties": { "message": { "description": "The message that this member needs to sign", "type": "string" }, "signer": { "description": "The full signer object of the quorum member that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" }, "type": "array" }, "remaining": { "description": "Number of member approvals still outstanding to reach the threshold", "type": "number" }, "submitted": { "description": "Quorum members that have already submitted", "items": { "properties": { "message": { "description": "The message that this member signed", "type": "string" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object of the quorum member who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the member signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" }, "type": "array" }, "threshold": { "description": "Number of member approvals required to satisfy the quorum", "type": "number" } }, "required": [ "pending", "remaining", "submitted", "threshold" ], "type": "object" }, "signer": { "description": "The quorum signer this approval entry belongs to", "properties": { "locator": { "description": "The derived `quorum:` locator of the quorum signer", "type": "string" }, "type": { "enum": ["quorum"], "type": "string" } }, "required": ["locator", "type"], "title": "Quorum Signer Reference", "type": "object" } }, "required": ["quorumApprovals", "signer"], "type": "object" }, { "properties": { "message": { "description": "The message that needs to be signed", "type": "string" }, "signer": { "description": "The full signer object that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" } ] }, "type": "array" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" }, "submitted": { "description": "Record of all submitted signatures", "items": { "anyOf": [ { "description": "Approval entry for a quorum (multisig) admin signer", "properties": { "quorumApprovals": { "description": "Per-member progress of an m-of-n quorum signer", "properties": { "pending": { "description": "Quorum members that have not yet submitted", "items": { "properties": { "message": { "description": "The message that this member needs to sign", "type": "string" }, "signer": { "description": "The full signer object of the quorum member that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" }, "type": "array" }, "remaining": { "description": "Number of member approvals still outstanding to reach the threshold", "type": "number" }, "submitted": { "description": "Quorum members that have already submitted", "items": { "properties": { "message": { "description": "The message that this member signed", "type": "string" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object of the quorum member who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the member signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" }, "type": "array" }, "threshold": { "description": "Number of member approvals required to satisfy the quorum", "type": "number" } }, "required": [ "pending", "remaining", "submitted", "threshold" ], "type": "object" }, "signer": { "description": "The quorum signer this approval entry belongs to", "properties": { "locator": { "description": "The derived `quorum:` locator of the quorum signer", "type": "string" }, "type": { "enum": ["quorum"], "type": "string" } }, "required": ["locator", "type"], "title": "Quorum Signer Reference", "type": "object" } }, "required": ["quorumApprovals", "signer"], "type": "object" }, { "properties": { "message": { "description": "The message that was signed", "type": "string" }, "metadata": { "description": "Additional metadata about the signature submission", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } }, "type": "object" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" } ] }, "type": "array" } }, "required": ["pending", "submitted"], "type": "object" }, "chainType": { "description": "The blockchain type of the wallet", "enum": ["aptos", "evm", "solana", "stellar", "sui"], "type": "string" }, "completedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the transaction reached finality" }, "createdAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the transaction was created" }, "error": { "anyOf": [ { "properties": { "logs": {}, "message": { "type": "string" }, "reason": { "enum": ["program_error"], "type": "string" }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" }, { "properties": { "message": { "type": "string" }, "reason": { "anyOf": [ { "enum": ["build_failed"], "type": "string" }, { "enum": ["failed_to_land_on_chain"], "type": "string" }, { "enum": ["sanctioned_wallet_address"], "type": "string" }, { "enum": ["unknown"], "type": "string" } ] }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" }, { "properties": { "message": { "type": "string" }, "reason": { "enum": ["execution_reverted"], "type": "string" }, "revert": { "properties": { "explorerLink": { "type": "string" }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "string" } ] }, "simulationLink": { "type": "string" }, "type": { "anyOf": [ { "enum": ["contract_call"], "type": "string" }, { "enum": ["wallet_authorization"], "type": "string" }, { "enum": ["wallet_deployment"], "type": "string" } ] } }, "required": ["reason", "type"], "type": "object" }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" } ], "description": "Error message if the transaction fails after submission" }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "properties": { "actual": {}, "billed": { "properties": { "usd": { "type": "number" } }, "required": ["usd"], "type": "object" }, "billing": { "properties": { "status": { "enum": ["failed", "pending", "settled"], "type": "string" } }, "required": ["status"], "type": "object" }, "estimate": {}, "mode": { "enum": ["project", "user-fungible", "user-native"], "type": "string" } }, "required": ["mode"], "type": "object" }, "id": { "description": "Unique identifier for the transaction", "type": "string" }, "onChain": { "properties": { "expiration": { "description": "The expiration of the transaction", "type": "number" }, "explorerLink": { "description": "Optional link to view the transaction in an explorer", "type": "string" }, "ledger": { "description": "The ledger number where the transaction was included", "type": "number" }, "proxiedTxId": { "description": "For regulated transfers, the delivery transaction hash", "type": "string" }, "result": { "description": "The Transaction Result in XDR format" }, "transaction": { "description": "The Stellar Transaction Envelope", "properties": { "method": { "type": "string" }, "tx": { "type": "string" } }, "required": ["method", "tx"], "title": "Stellar on-chain transaction", "type": "object" }, "txId": { "description": "The transaction hash", "type": "string" } }, "required": ["expiration", "transaction"], "title": "Stellar on-chain data", "type": "object" }, "params": { "properties": { "signer": { "description": "The locator for the signer who will submit this transaction. Defaults to the admin signer.", "example": "passkey:cWtP7gmZbd98HbKUuGXx5Q", "title": "Signer Locator", "type": "string" }, "transaction": { "description": "Stellar transaction to execute", "oneOf": [ { "description": "Completes a pending wallet upgrade by migrating on-chain signer data to the new contract version. Must be called after upgrade-wallet.", "example": { "type": "migrate-wallet" }, "properties": { "type": { "description": "The type of transaction to execute", "enum": ["migrate-wallet"], "type": "string" } }, "required": ["type"], "title": "Stellar migrate wallet transaction", "type": "object" }, { "description": "Parameters for a transaction to execute a smart contract function", "example": { "args": { "amount": "1000000000000000000", "from": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "to": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J" }, "contractId": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "method": "transfer", "type": "contract-call" }, "properties": { "args": { "additionalProperties": true, "description": "The arguments to pass to the function", "type": "object" }, "contractId": { "description": "The recipient address for this transaction call", "example": "GB3KQJ6N2YIE62YVO67X7W5TQK6Q5ZZ4P2LUVK2U6AU26CJQ626J", "type": "string" }, "memo": { "description": "The memo for the transaction", "example": { "type": "text", "value": "Hello, world!" }, "oneOf": [ { "properties": { "type": { "enum": ["hash"], "type": "string" }, "value": { "type": "string" } }, "required": ["type", "value"], "type": "object" }, { "properties": { "type": { "enum": ["id"], "type": "string" }, "value": { "type": "string" } }, "required": ["type", "value"], "type": "object" }, { "properties": { "type": { "enum": ["text"], "type": "string" }, "value": { "maxLength": 28, "type": "string" } }, "required": ["type", "value"], "type": "object" } ] }, "method": { "description": "The name of the function to call", "type": "string" }, "type": { "description": "The type of transaction to execute", "enum": ["contract-call"], "type": "string" } }, "required": ["args", "contractId", "method", "type"], "title": "Stellar contract call transaction parameters", "type": "object" }, { "description": "Upgrades the wallet's on-chain contract to a new version. The wallet will be locked until a migrate-wallet transaction completes the upgrade.", "example": { "type": "upgrade-wallet" }, "properties": { "type": { "description": "The type of transaction to execute", "enum": ["upgrade-wallet"], "type": "string" } }, "required": ["type"], "title": "Stellar upgrade wallet transaction", "type": "object" } ] } }, "required": ["transaction"], "type": "object" }, "sendParams": { "properties": { "params": { "description": "The parameters for the send token transaction", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "description": "The recipient locator for the token", "type": "string" }, "recipientAddress": { "description": "The recipient address for the token", "type": "string" } }, "required": ["recipient", "recipientAddress"], "type": "object" }, "token": { "description": "The token locator that's being sent", "type": "string" } }, "required": ["params", "token"], "type": "object" }, "status": { "description": "Current status of the transaction", "enum": ["awaiting-approval", "failed", "pending", "success"], "type": "string" }, "walletType": { "description": "The wallet type (smart or mpc)", "enum": ["mpc", "smart"], "type": "string" } }, "required": [ "chainType", "createdAt", "id", "onChain", "params", "status", "walletType" ], "title": "Stellar Smart Wallet", "type": "object" }, { "properties": { "approvals": { "description": "Complete approval data including requirements, pending and submitted signatures", "properties": { "pending": { "description": "List of pending signatures", "items": { "anyOf": [ { "description": "Approval entry for a quorum (multisig) admin signer", "properties": { "quorumApprovals": { "description": "Per-member progress of an m-of-n quorum signer", "properties": { "pending": { "description": "Quorum members that have not yet submitted", "items": { "properties": { "message": { "description": "The message that this member needs to sign", "type": "string" }, "signer": { "description": "The full signer object of the quorum member that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" }, "type": "array" }, "remaining": { "description": "Number of member approvals still outstanding to reach the threshold", "type": "number" }, "submitted": { "description": "Quorum members that have already submitted", "items": { "properties": { "message": { "description": "The message that this member signed", "type": "string" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object of the quorum member who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the member signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" }, "type": "array" }, "threshold": { "description": "Number of member approvals required to satisfy the quorum", "type": "number" } }, "required": [ "pending", "remaining", "submitted", "threshold" ], "type": "object" }, "signer": { "description": "The quorum signer this approval entry belongs to", "properties": { "locator": { "description": "The derived `quorum:` locator of the quorum signer", "type": "string" }, "type": { "enum": ["quorum"], "type": "string" } }, "required": ["locator", "type"], "title": "Quorum Signer Reference", "type": "object" } }, "required": ["quorumApprovals", "signer"], "type": "object" }, { "properties": { "message": { "description": "The message that needs to be signed", "type": "string" }, "signer": { "description": "The full signer object that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" } ] }, "type": "array" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" }, "submitted": { "description": "Record of all submitted signatures", "items": { "anyOf": [ { "description": "Approval entry for a quorum (multisig) admin signer", "properties": { "quorumApprovals": { "description": "Per-member progress of an m-of-n quorum signer", "properties": { "pending": { "description": "Quorum members that have not yet submitted", "items": { "properties": { "message": { "description": "The message that this member needs to sign", "type": "string" }, "signer": { "description": "The full signer object of the quorum member that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" }, "type": "array" }, "remaining": { "description": "Number of member approvals still outstanding to reach the threshold", "type": "number" }, "submitted": { "description": "Quorum members that have already submitted", "items": { "properties": { "message": { "description": "The message that this member signed", "type": "string" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object of the quorum member who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the member signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" }, "type": "array" }, "threshold": { "description": "Number of member approvals required to satisfy the quorum", "type": "number" } }, "required": [ "pending", "remaining", "submitted", "threshold" ], "type": "object" }, "signer": { "description": "The quorum signer this approval entry belongs to", "properties": { "locator": { "description": "The derived `quorum:` locator of the quorum signer", "type": "string" }, "type": { "enum": ["quorum"], "type": "string" } }, "required": ["locator", "type"], "title": "Quorum Signer Reference", "type": "object" } }, "required": ["quorumApprovals", "signer"], "type": "object" }, { "properties": { "message": { "description": "The message that was signed", "type": "string" }, "metadata": { "description": "Additional metadata about the signature submission", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } }, "type": "object" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" } ] }, "type": "array" } }, "required": ["pending", "submitted"], "type": "object" }, "chainType": { "description": "The blockchain type of the wallet", "enum": ["aptos", "evm", "solana", "stellar", "sui"], "type": "string" }, "completedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the transaction reached finality" }, "createdAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the transaction was created" }, "error": { "anyOf": [ { "properties": { "logs": {}, "message": { "type": "string" }, "reason": { "enum": ["program_error"], "type": "string" }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" }, { "properties": { "message": { "type": "string" }, "reason": { "anyOf": [ { "enum": ["build_failed"], "type": "string" }, { "enum": ["failed_to_land_on_chain"], "type": "string" }, { "enum": ["sanctioned_wallet_address"], "type": "string" }, { "enum": ["unknown"], "type": "string" } ] }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" }, { "properties": { "message": { "type": "string" }, "reason": { "enum": ["execution_reverted"], "type": "string" }, "revert": { "properties": { "explorerLink": { "type": "string" }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "string" } ] }, "simulationLink": { "type": "string" }, "type": { "anyOf": [ { "enum": ["contract_call"], "type": "string" }, { "enum": ["wallet_authorization"], "type": "string" }, { "enum": ["wallet_deployment"], "type": "string" } ] } }, "required": ["reason", "type"], "type": "object" }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" } ], "description": "Error message if the transaction fails after submission" }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "properties": { "actual": {}, "billed": { "properties": { "usd": { "type": "number" } }, "required": ["usd"], "type": "object" }, "billing": { "properties": { "status": { "enum": ["failed", "pending", "settled"], "type": "string" } }, "required": ["status"], "type": "object" }, "estimate": {}, "mode": { "enum": ["project", "user-fungible", "user-native"], "type": "string" } }, "required": ["mode"], "type": "object" }, "id": { "description": "Unique identifier for the transaction", "type": "string" }, "onChain": { "properties": { "explorerLink": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "proxiedTxId": { "type": "string" }, "transaction": { "type": "string" }, "txId": { "type": "string" } }, "required": ["transaction"], "type": "object" }, "params": { "properties": { "feeConfig": { "anyOf": [ { "properties": { "amount": { "description": "The amount of the fee", "type": "string" }, "feePayer": { "description": "The address that will pay for the transaction", "type": "string" }, "token": { "description": "The token to use for the fee", "enum": ["sol", "usdc", "usdt"], "type": "string" } }, "required": ["amount", "feePayer", "token"], "type": "object" }, { "properties": { "amount": { "description": "The amount of the fee", "type": "string" }, "feePayer": { "enum": ["crossmint"], "type": "string" } }, "required": ["amount", "feePayer"], "type": "object" } ] }, "requiredSigners": { "description": "Optional array of additional full signer objects required for the transaction", "items": { "description": "Full signer object", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": ["locator", "publicKey", "type"], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] }, "type": "array" }, "signer": { "anyOf": [ { "description": "Full signer object", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": ["locator", "publicKey", "type"], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] }, { "description": "Reference to an m-of-n quorum signer. The quorum is a composite — its members and their per-member progress are carried in the entry's `quorumApprovals`, not here.", "properties": { "locator": { "description": "The derived `quorum:` locator of the quorum signer", "type": "string" }, "type": { "enum": ["quorum"], "type": "string" } }, "required": ["locator", "type"], "title": "Quorum Signer Reference", "type": "object" } ], "description": "The full signer object who will submit this transaction. Defaults to the admin signer." }, "transaction": { "description": "Base58 encoded serialized Solana transaction", "type": "string" } }, "required": ["feeConfig", "transaction"], "type": "object" }, "sendParams": { "properties": { "params": { "description": "The parameters for the send token transaction", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "description": "The recipient locator for the token", "type": "string" }, "recipientAddress": { "description": "The recipient address for the token", "type": "string" } }, "required": ["recipient", "recipientAddress"], "type": "object" }, "token": { "description": "The token locator that's being sent", "type": "string" } }, "required": ["params", "token"], "type": "object" }, "status": { "description": "Current status of the transaction", "enum": ["awaiting-approval", "failed", "pending", "success"], "type": "string" }, "walletType": { "description": "The wallet type (smart or mpc)", "enum": ["mpc", "smart"], "type": "string" } }, "required": [ "chainType", "createdAt", "id", "onChain", "params", "status", "walletType" ], "title": "Solana Smart Wallet", "type": "object" }, { "properties": { "approvals": { "description": "Complete approval data including requirements, pending and submitted signatures", "properties": { "pending": { "description": "List of pending signatures", "items": { "anyOf": [ { "description": "Approval entry for a quorum (multisig) admin signer", "properties": { "quorumApprovals": { "description": "Per-member progress of an m-of-n quorum signer", "properties": { "pending": { "description": "Quorum members that have not yet submitted", "items": { "properties": { "message": { "description": "The message that this member needs to sign", "type": "string" }, "signer": { "description": "The full signer object of the quorum member that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" }, "type": "array" }, "remaining": { "description": "Number of member approvals still outstanding to reach the threshold", "type": "number" }, "submitted": { "description": "Quorum members that have already submitted", "items": { "properties": { "message": { "description": "The message that this member signed", "type": "string" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object of the quorum member who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the member signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" }, "type": "array" }, "threshold": { "description": "Number of member approvals required to satisfy the quorum", "type": "number" } }, "required": [ "pending", "remaining", "submitted", "threshold" ], "type": "object" }, "signer": { "description": "The quorum signer this approval entry belongs to", "properties": { "locator": { "description": "The derived `quorum:` locator of the quorum signer", "type": "string" }, "type": { "enum": ["quorum"], "type": "string" } }, "required": ["locator", "type"], "title": "Quorum Signer Reference", "type": "object" } }, "required": ["quorumApprovals", "signer"], "type": "object" }, { "properties": { "message": { "description": "The message that needs to be signed", "type": "string" }, "signer": { "description": "The full signer object that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" } ] }, "type": "array" }, "required": { "description": "Number of required approvals for the transaction", "type": "number" }, "submitted": { "description": "Record of all submitted signatures", "items": { "anyOf": [ { "description": "Approval entry for a quorum (multisig) admin signer", "properties": { "quorumApprovals": { "description": "Per-member progress of an m-of-n quorum signer", "properties": { "pending": { "description": "Quorum members that have not yet submitted", "items": { "properties": { "message": { "description": "The message that this member needs to sign", "type": "string" }, "signer": { "description": "The full signer object of the quorum member that's pending approval", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] } }, "required": ["message", "signer"], "type": "object" }, "type": "array" }, "remaining": { "description": "Number of member approvals still outstanding to reach the threshold", "type": "number" }, "submitted": { "description": "Quorum members that have already submitted", "items": { "properties": { "message": { "description": "The message that this member signed", "type": "string" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object of the quorum member who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": [ "api-key" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": [ "x", "y" ], "type": "object" }, "type": { "enum": [ "device" ], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": [ "external-wallet" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": [ "passkey" ], "type": "string" } }, "required": [ "id", "locator", "type" ], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "server" ], "type": "string" } }, "required": [ "address", "locator", "type" ], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": [ "email" ], "type": "string" } }, "required": [ "email", "locator", "type" ], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": [ "phone" ], "type": "string" } }, "required": [ "locator", "phone", "type" ], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the member signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" }, "type": "array" }, "threshold": { "description": "Number of member approvals required to satisfy the quorum", "type": "number" } }, "required": [ "pending", "remaining", "submitted", "threshold" ], "type": "object" }, "signer": { "description": "The quorum signer this approval entry belongs to", "properties": { "locator": { "description": "The derived `quorum:` locator of the quorum signer", "type": "string" }, "type": { "enum": ["quorum"], "type": "string" } }, "required": ["locator", "type"], "title": "Quorum Signer Reference", "type": "object" } }, "required": ["quorumApprovals", "signer"], "type": "object" }, { "properties": { "message": { "description": "The message that was signed", "type": "string" }, "metadata": { "description": "Additional metadata about the signature submission", "properties": { "deviceInfo": { "type": "string" }, "ipAddress": { "type": "string" }, "userAgent": { "type": "string" } }, "type": "object" }, "signature": { "description": "The cryptographic signature", "type": "string" }, "signer": { "description": "The full signer object who submitted this signature", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": [ "locator", "publicKey", "type" ], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] }, "submittedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "When the signature was submitted" } }, "required": [ "message", "signature", "signer", "submittedAt" ], "type": "object" } ] }, "type": "array" } }, "required": ["pending", "submitted"], "type": "object" }, "chainType": { "description": "The blockchain type of the wallet", "enum": ["aptos", "evm", "solana", "stellar", "sui"], "type": "string" }, "completedAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the transaction reached finality" }, "createdAt": { "anyOf": [ { "description": "ISO 8601 formatted timestamp", "type": "number" }, { "type": "string" } ], "description": "ISO timestamp when the transaction was created" }, "error": { "anyOf": [ { "properties": { "logs": {}, "message": { "type": "string" }, "reason": { "enum": ["program_error"], "type": "string" }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" }, { "properties": { "message": { "type": "string" }, "reason": { "anyOf": [ { "enum": ["build_failed"], "type": "string" }, { "enum": ["failed_to_land_on_chain"], "type": "string" }, { "enum": ["sanctioned_wallet_address"], "type": "string" }, { "enum": ["unknown"], "type": "string" } ] }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" }, { "properties": { "message": { "type": "string" }, "reason": { "enum": ["execution_reverted"], "type": "string" }, "revert": { "properties": { "explorerLink": { "type": "string" }, "reason": { "type": "string" }, "reasonData": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "string" } ] }, "simulationLink": { "type": "string" }, "type": { "anyOf": [ { "enum": ["contract_call"], "type": "string" }, { "enum": ["wallet_authorization"], "type": "string" }, { "enum": ["wallet_deployment"], "type": "string" } ] } }, "required": ["reason", "type"], "type": "object" }, "revertData": { "additionalProperties": true, "type": "object" } }, "required": ["message", "reason"], "type": "object" } ], "description": "Error message if the transaction fails after submission" }, "fees": { "description": "Transaction fee information including actual transaction fees, billed amounts, and billing status", "properties": { "actual": {}, "billed": { "properties": { "usd": { "type": "number" } }, "required": ["usd"], "type": "object" }, "billing": { "properties": { "status": { "enum": ["failed", "pending", "settled"], "type": "string" } }, "required": ["status"], "type": "object" }, "estimate": {}, "mode": { "enum": ["project", "user-fungible", "user-native"], "type": "string" } }, "required": ["mode"], "type": "object" }, "id": { "description": "Unique identifier for the transaction", "type": "string" }, "onChain": { "properties": { "explorerLink": { "type": "string" }, "lastValidBlockHeight": { "type": "number" }, "proxiedTxId": { "type": "string" }, "transaction": { "type": "string" }, "txId": { "type": "string" } }, "required": ["transaction"], "type": "object" }, "params": { "properties": { "requiredSigners": { "description": "Optional array of additional full signer objects required for the transaction", "items": { "description": "Full signer object", "oneOf": [ { "description": "Full API Key signer object", "properties": { "address": { "description": "The address of the api key", "type": "string" }, "locator": { "description": "The locator of the api key signer", "type": "string" }, "type": { "enum": ["api-key"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "API Key Signer", "type": "object" }, { "description": "Full Device signer object", "properties": { "locator": { "description": "The locator of the device signer", "type": "string" }, "name": { "description": "Optional human-readable name for the device signer", "type": "string" }, "publicKey": { "description": "The p256 public key of the device signer", "properties": { "x": { "type": "string" }, "y": { "type": "string" } }, "required": ["x", "y"], "type": "object" }, "type": { "enum": ["device"], "type": "string" } }, "required": ["locator", "publicKey", "type"], "title": "Device Signer", "type": "object" }, { "description": "Full External Wallet signer object", "properties": { "address": { "description": "The address of the external wallet", "type": "string" }, "locator": { "description": "The locator of the external wallet signer", "type": "string" }, "type": { "enum": ["external-wallet"], "type": "string" } }, "required": ["address", "locator", "type"], "title": "External Wallet Signer", "type": "object" }, { "description": "Full Passkey signer object", "properties": { "id": { "description": "The ID of the passkey", "type": "string" }, "locator": { "description": "The locator of the passkey signer", "type": "string" }, "type": { "enum": ["passkey"], "type": "string" } }, "required": ["id", "locator", "type"], "title": "Passkey Signer", "type": "object" }, { "properties": { "address": { "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["server"], "type": "string" } }, "required": ["address", "locator", "type"], "type": "object" }, { "properties": { "email": { "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "locator": { "type": "string" }, "type": { "enum": ["email"], "type": "string" } }, "required": ["email", "locator", "type"], "type": "object" }, { "properties": { "locator": { "type": "string" }, "phone": { "type": "string" }, "type": { "enum": ["phone"], "type": "string" } }, "required": ["locator", "phone", "type"], "type": "object" } ] }, "type": "array" }, "transaction": { "description": "Base58 encoded serialized Solana transaction", "type": "string" } }, "required": ["transaction"], "type": "object" }, "sendParams": { "properties": { "params": { "description": "The parameters for the send token transaction", "properties": { "amount": { "description": "The amount of the token to send", "type": "string" }, "recipient": { "description": "The recipient locator for the token", "type": "string" }, "recipientAddress": { "description": "The recipient address for the token", "type": "string" } }, "required": ["recipient", "recipientAddress"], "type": "object" }, "token": { "description": "The token locator that's being sent", "type": "string" } }, "required": ["params", "token"], "type": "object" }, "status": { "description": "Current status of the transaction", "enum": ["awaiting-approval", "failed", "pending", "success"], "type": "string" }, "walletType": { "description": "The wallet type (smart or mpc)", "enum": ["mpc", "smart"], "type": "string" } }, "required": [ "chainType", "createdAt", "id", "onChain", "params", "status", "walletType" ], "title": "Solana MPC Wallet", "type": "object" } ], "description": "Complete transaction response including status, signing requirements, and wallet type specific data" } }, "required": ["recoveryMethods", "tx"], "type": "object" } } } }