{
  "openapi": "3.1.0",
  "info": {
    "title": "mpcvault.platform.v1",
    "version": "0.0.1"
  },
  "servers": [
    {
      "url": "https://api.mpcvault.com",
      "description": "MPCVault API Server"
    }
  ],
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "x-mtoken",
        "description": "Your API token. Required for all API requests."
      }
    },
    "schemas": {
      "google.protobuf.BoolValue": {
        "type": "boolean",
        "description": "Wrapper message for `bool`.\n\n The JSON representation for `BoolValue` is JSON `true` and `false`.\n\n Not recommended for use in new APIs, but still useful for legacy APIs and\n has no plan to be removed."
      },
      "google.protobuf.Int64Value": {
        "oneOf": [
          {
            "type": "string"
          },
          {
            "type": "number"
          }
        ],
        "description": "Wrapper message for `int64`.\n\n The JSON representation for `Int64Value` is JSON string.\n\n Not recommended for use in new APIs, but still useful for legacy APIs and\n has no plan to be removed."
      },
      "google.protobuf.StringValue": {
        "type": "string",
        "description": "Wrapper message for `string`.\n\n The JSON representation for `StringValue` is JSON string.\n\n Not recommended for use in new APIs, but still useful for legacy APIs and\n has no plan to be removed."
      },
      "mpcvault.platform.v1.AptosGas": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "maxGasAmount": {
            "description": "Maximum gas units the transaction may use. Decimal integer string in gas units. `null` when not set. On create: a positive integer string that fits in 64 bits, digits only.",
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[0-9]+$"
          },
          "gasUnitPrice": {
            "description": "Price per gas unit the sender is willing to pay. Decimal integer string in octa (10^-8 APT), rounded to a whole octa as signing rounds it; when it is `\"0\"` the network's estimate is used at signing. `null` when not set. On create: a positive integer string, digits only.",
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[0-9]+$"
          }
        },
        "additionalProperties": false,
        "description": "An object with neither `maxGasAmount` nor `gasUnitPrice` is treated as no custom gas settings."
      },
      "mpcvault.platform.v1.AptosMessage": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Signer wallet address in the vault. Aptos address; API requests return it as supplied, plugin requests return the wallet's address (`0x` plus 64 lowercase hex digits)."
          },
          "type": {
            "description": "Kind of message. Enum name; always `TYPE_DEFAULT` in responses.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosMessage.Type"
          },
          "content": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosMessage.Message",
            "description": "Message to sign, with its `message` text and `nonce` and the optional `address`, `application` and `chainId` it carries. Required on create."
          }
        },
        "additionalProperties": false,
        "required": [
          "type",
          "from",
          "content"
        ]
      },
      "mpcvault.platform.v1.AptosMessage.Message": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "address": {
            "description": "Address placed inside the message, as supplied (UTF-8 string, not validated against `from`). `null` when empty.",
            "type": [
              "string",
              "null"
            ]
          },
          "application": {
            "description": "Name or domain of the application the message is for, as supplied (UTF-8 string, unvalidated). `null` when empty.",
            "type": [
              "string",
              "null"
            ],
            "example": "application"
          },
          "chainId": {
            "description": "Chain ID placed inside the message, for example `\"1\"`. Returned as a decimal string; `null` when absent or `0`.",
            "type": [
              "integer",
              "string",
              "null"
            ],
            "format": "int64",
            "example": "137"
          },
          "message": {
            "type": "string",
            "title": "message",
            "description": "Text of the message to sign. UTF-8 string, as supplied (unvalidated, not normalized); required non-empty on create.",
            "example": "message"
          },
          "nonce": {
            "type": "string",
            "title": "nonce",
            "description": "Nonce of the message. UTF-8 string, as supplied (unvalidated); required non-empty on create.",
            "example": "1"
          }
        },
        "additionalProperties": false,
        "required": [
          "message",
          "nonce"
        ]
      },
      "mpcvault.platform.v1.AptosMessage.Type": {
        "type": "string",
        "title": "Type",
        "enum": [
          "TYPE_UNSPECIFIED",
          "TYPE_DEFAULT"
        ]
      },
      "mpcvault.platform.v1.AptosSendCoin": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "chainId": {
            "type": [
              "integer",
              "string"
            ],
            "title": "chain_id",
            "format": "int64",
            "description": "Chain ID of the network: `1` for Aptos mainnet, `126` for Movement mainnet. Returned as a decimal string. Required on create: it selects the network, and an ID that matches no network is rejected (an omitted value reads as `0`).",
            "example": "1"
          },
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Aptos address: `0x` plus 62 to 64 hex digits, or 64 hex digits without `0x`, in any letter case; returned exactly as supplied when the request was created (not padded or lowercased)."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Aptos address: `0x` plus 62 to 64 hex digits, or 64 hex digits without `0x`, in any letter case; returned exactly as supplied when the request was created (not padded or lowercased)."
          },
          "coinTag": {
            "type": "string",
            "title": "coin_tag",
            "description": "Type tag of the coin to send, `ADDRESS::module::Struct`, returned exactly as supplied (not normalized to the canonical padded form). On create the native coin (`0x1::aptos_coin::AptosCoin`) is rejected: use `aptosSendNative`. The coin must resolve to a known token, and the recipient must have registered it.",
            "example": "tx_hash:0a1b2c3d...789e, output_index:0"
          },
          "amount": {
            "type": "string",
            "title": "amount",
            "description": "Amount of coins to send. Decimal string in the coin's smallest unit (amount x 10^decimals, using the decimals of the coin). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "pattern": "^[0-9]+$"
          },
          "gasFee": {
            "description": "Custom gas settings (gas units and octa per gas unit, see `AptosGas`). `null` when no custom fee was set.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosGas"
          }
        },
        "additionalProperties": false,
        "required": [
          "chainId",
          "from",
          "to",
          "coinTag",
          "amount"
        ]
      },
      "mpcvault.platform.v1.AptosSendCustom": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "chainId": {
            "type": [
              "integer",
              "string"
            ],
            "title": "chain_id",
            "format": "int64",
            "description": "Chain ID of the network: `1` for Aptos mainnet, `126` for Movement mainnet. Returned as a decimal string. Required on create: it selects the network, and an ID that matches no network is rejected (an omitted value reads as `0`).",
            "example": "1"
          },
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Aptos address: `0x` plus 62 to 64 hex digits, or 64 hex digits without `0x`, in any letter case; returned exactly as supplied when the request was created (not padded or lowercased)."
          },
          "payload": {
            "type": "string",
            "title": "payload",
            "format": "byte",
            "description": "Transaction to sign. Bytes, base64 (standard, padded) in JSON. A JSON entry-function payload is returned as UTF-8 text re-indented with two spaces (equal in meaning, not byte-identical to what was submitted); a BCS-serialized transaction payload (`TransactionPayload`, not a raw transaction) is returned byte-identical. On create a JSON payload must carry a non-empty `function`, and a `function` spelled `0x1::account::rotate_authentication_key` (compared case-insensitively, as written) is rejected."
          },
          "gasFee": {
            "description": "Custom gas settings (gas units and octa per gas unit, see `AptosGas`). For a request created through the API or in the MPCVault app, `null` when no custom fee was set. For a dApp transaction, `maxGasAmount` falls back to the gas limit stored with the request when the signer set none, so the object can be present without a custom fee, and `gasUnitPrice` is only the price the signer set.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosGas"
          }
        },
        "additionalProperties": false,
        "required": [
          "chainId",
          "from",
          "payload"
        ]
      },
      "mpcvault.platform.v1.AptosSendNative": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "chainId": {
            "type": [
              "integer",
              "string"
            ],
            "title": "chain_id",
            "format": "int64",
            "description": "Chain ID of the network: `1` for Aptos mainnet, `126` for Movement mainnet. Returned as a decimal string. Required on create: it selects the network, and an ID that matches no network is rejected (an omitted value reads as `0`).",
            "example": "1"
          },
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Aptos address: `0x` plus 62 to 64 hex digits, or 64 hex digits without `0x`, in any letter case; returned exactly as supplied when the request was created (not padded or lowercased)."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Aptos address: `0x` plus 62 to 64 hex digits, or 64 hex digits without `0x`, in any letter case; returned exactly as supplied when the request was created (not padded or lowercased)."
          },
          "value": {
            "type": "string",
            "title": "value",
            "description": "Amount of APT to send. Decimal string in octa (10^-8 APT). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "pattern": "^[0-9]+$"
          },
          "gasFee": {
            "description": "Custom gas settings (gas units and octa per gas unit, see `AptosGas`). `null` when no custom fee was set.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosGas"
          }
        },
        "additionalProperties": false,
        "required": [
          "chainId",
          "from",
          "to",
          "value"
        ]
      },
      "mpcvault.platform.v1.BTCBatchSendNative": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address. It has to be in this vault."
          },
          "recipients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/mpcvault.platform.v1.BatchPaymentRecipient"
            },
            "title": "recipients",
            "description": "List of recipients. On create 1 to 254 recipients are required (an empty list or more than 254 is rejected), and recipient addresses must be distinct.",
            "minItems": 1,
            "maxItems": 254
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "recipients"
        ]
      },
      "mpcvault.platform.v1.BTCSendNative": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Bitcoin mainnet address (base58check `1...` or `3...`, or bech32 `bc1...`), returned exactly as supplied when the request was created (not normalized)."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Bitcoin mainnet address (base58check `1...` or `3...`, or bech32 `bc1...`), returned exactly as supplied when the request was created (not normalized)."
          },
          "amount": {
            "type": "string",
            "title": "amount",
            "description": "Amount of BTC to send. Decimal string in satoshi (10^-8 BTC). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "example": "1000000000000000",
            "pattern": "^[0-9]+$"
          },
          "networkFee": {
            "type": [
              "integer",
              "string"
            ],
            "title": "network_fee",
            "format": "int64",
            "description": "Fee rate the sender is willing to pay, as an integer number of satoshi per virtual byte (sat/vB). Returned as a decimal string; `\"0\"` when no rate was set. On create, omit it or send `0` to use MPCVault's default fee rate.",
            "example": "1"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "to",
          "amount"
        ]
      },
      "mpcvault.platform.v1.BatchPayment": {
        "type": [
          "object",
          "null"
        ],
        "additionalProperties": false,
        "properties": {
          "uuid": {
            "type": "string",
            "title": "uuid",
            "description": "Unique identifier of the batch payment.",
            "format": "uuid",
            "example": "9f5ee5fb-07f5-470c-a2ff-081e2d6d107a"
          },
          "name": {
            "type": "string",
            "title": "name",
            "description": "Name of the batch payment.",
            "example": "name1"
          },
          "notes": {
            "type": "string",
            "title": "notes",
            "description": "Transaction notes for the batch payment.",
            "example": "notes test"
          },
          "status": {
            "description": "Status of the batch payment.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.BatchPayment.Status"
          },
          "failedReason": {
            "type": "string",
            "title": "failed_reason",
            "description": "Reason why the batch payment failed, only set if status is STATUS_FAILED.",
            "example": "failed reason"
          },
          "creationTimestamp": {
            "type": [
              "integer",
              "string"
            ],
            "title": "creation_timestamp",
            "format": "int64",
            "description": "Timestamp when the batch payment was created.",
            "example": "1744274467154"
          },
          "approvalSigningRequest": {
            "description": "Signing request that approves the tokens to be sent if needed.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.SigningRequest"
          },
          "sendSigningRequest": {
            "description": "Signing request that sends the batch payment.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.SigningRequest"
          },
          "btcBatchSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.BTCBatchSendNative"
          },
          "evmBatchSendErc20": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMBatchSendERC20"
          },
          "evmBatchSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMBatchSendNative"
          },
          "suiBatchSendCoin": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SUIBatchSendCoin"
          },
          "suiBatchSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SUIBatchSendNative"
          }
        },
        "required": [
          "uuid",
          "status",
          "creationTimestamp"
        ]
      },
      "mpcvault.platform.v1.BatchPayment.Status": {
        "type": "string",
        "title": "Status",
        "enum": [
          "STATUS_UNSPECIFIED",
          "STATUS_PENDING",
          "STATUS_SUCCEEDED",
          "STATUS_FAILED"
        ]
      },
      "mpcvault.platform.v1.BatchPaymentRecipient": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "title": "address",
            "description": "Address of the recipient. On create it must be a valid address for the batch's network; the same address twice in one batch is rejected (EVM addresses are compared case-insensitively)."
          },
          "amount": {
            "type": "string",
            "title": "amount",
            "description": "Amount of the tokens to send.For native tokens such as ether/btc, the amount is denominated in wei/satoshi.For ERC20 tokens you should use whole integer representation. [amount * 10^decimals],For bitcoin, the amount is denominated in satoshi. On create: a non-negative integer string, digits only (`0` is accepted).",
            "pattern": "^[0-9]+$"
          },
          "notes": {
            "description": "Note for this entry in the batch payment. At most 1000 Unicode code points.",
            "type": [
              "string",
              "null"
            ],
            "example": "Monthly payroll",
            "maxLength": 1000
          }
        },
        "additionalProperties": false,
        "required": [
          "address",
          "amount"
        ]
      },
      "mpcvault.platform.v1.CreateBatchPaymentRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "title": "name",
            "description": "Name of the batch payment. 1 to 85 Unicode code points.",
            "example": "Monthly payroll",
            "minLength": 1,
            "maxLength": 85
          },
          "notes": {
            "description": "Transaction notes for the batch payment. At most 1000 Unicode code points.",
            "type": [
              "string",
              "null"
            ],
            "example": "Monthly payroll",
            "maxLength": 1000
          },
          "btcBatchSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.BTCBatchSendNative"
          },
          "evmBatchSendErc20": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMBatchSendERC20"
          },
          "evmBatchSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMBatchSendNative"
          },
          "suiBatchSendCoin": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SUIBatchSendCoin"
          },
          "suiBatchSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SUIBatchSendNative"
          }
        },
        "description": "Exactly one batch variant field must be set. The batch is rejected on a custom EVM network. The sender must be an active wallet in a vault the API token can access.",
        "required": [
          "name"
        ]
      },
      "mpcvault.platform.v1.CreateBatchPaymentResponse": {
        "type": "object",
        "properties": {
          "batchPayment": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.BatchPayment"
          },
          "error": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.CreateSigningRequestRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "notes": {
            "description": "Transaction notes for the signing request.",
            "type": [
              "string",
              "null"
            ]
          },
          "vaultUuid": {
            "description": "UUID of the vault that owns the `from` wallet. Required when `callbackClientSignerPublicKey` is set (it must be the vault that owns the `from` wallet) and always for `rawMessage`. Otherwise it is ignored, except for `evmMessage` on a custom EVM network, where it selects the vault's custom network.",
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "example": "9f5ee5fb-07f5-470c-a2ff-081e2d6d107a"
          },
          "callbackClientSignerPublicKey": {
            "description": "Public key of the API client signer that receives the callback: OpenSSH `authorized_keys` text of an `ssh-ed25519` key. For a transaction or structured message, omit it, or send `null`, to show the request in the MPCVault app for manual signing; an empty string is rejected. Required for `rawMessage`. An API wallet can only be signed by an API client signer, so set it for requests on an API wallet; the create call does not check this. When set, it must be the public key of the API client signer configured for the vault that owns the `from` wallet (any other key is rejected), and the caller's IP address must be in that signer's IP whitelist. A misspelled field name is ignored and read as omitted: manual signing for a transaction or structured message, and a `ClientSignerPublicKey is required` rejection for `rawMessage`.",
            "type": [
              "string",
              "null"
            ],
            "example": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDmdWUo3e3/xUd0kbXCz4omzhqcYaPPYNTZ6ndqZdBAo test"
          },
          "broadcastTx": {
            "description": "Whether MPCVault broadcasts the transaction after it is signed. Omitted or `null` means `true`; send `false` to receive the signed transaction and broadcast it yourself. Not supported for message types, `rawMessage`, or transactions on custom EVM networks. All other standard transactions on system chains are supported.",
            "type": [
              "boolean",
              "null"
            ],
            "default": true
          },
          "aptosMessage": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosMessage"
          },
          "aptosSendCoin": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosSendCoin"
          },
          "aptosSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosSendCustom"
          },
          "aptosSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosSendNative"
          },
          "btcSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.BTCSendNative"
          },
          "evmMessage": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMMessage"
          },
          "evmSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMSendCustom"
          },
          "evmSendErc20": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMSendERC20"
          },
          "evmSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMSendNative"
          },
          "rawMessage": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.RawMessage"
          },
          "solanaMessage": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaMessage"
          },
          "solanaSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaSendCustom"
          },
          "solanaSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaSendNative"
          },
          "solanaSendSplToken": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaSendSPLToken"
          },
          "sonicSvmSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaSendCustom"
          },
          "sonicSvmSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaSendNative"
          },
          "sonicSvmSendSplToken": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaSendSPLToken"
          },
          "stellarChangeTrust": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.StellarChangeTrust"
          },
          "stellarSendAsset": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.StellarSendAsset"
          },
          "stellarSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.StellarSendCustom"
          },
          "stellarSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.StellarSendNative"
          },
          "suiMessage": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SuiMessage"
          },
          "suiSendCoin": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SuiSendCoin"
          },
          "suiSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SuiSendCustom"
          },
          "suiSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SuiSendNative"
          },
          "tonMessage": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TonMessage"
          },
          "tonSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TonSendCustom"
          },
          "tonSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TonSendNative"
          },
          "tonSendToken": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TonSendToken"
          },
          "tronSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TronSendNative"
          },
          "tronSendTrc10": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TronSendTRC10"
          },
          "tronSendTrc20": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TronSendTRC20"
          }
        },
        "required": [],
        "description": "The vault and wallet to create the request in, and exactly one payload field for the kind of request to create. The payload's `from` wallet must be active (a pending or archived wallet is rejected) and in a vault the API token can access. Amounts and gas values given as strings are non-negative integers (digits only) in the network's smallest unit, except Stellar amounts, which are decimals in whole units. A token transfer is rejected when the token cannot be resolved on the network or is marked as spam in the vault. A transaction or structured message request without `callbackClientSignerPublicKey` is shown in the MPCVault app. Creating a transaction request is rejected once the API token has 500 pending requests of that kind (messages included)."
      },
      "mpcvault.platform.v1.CreateSigningRequestResponse": {
        "type": "object",
        "properties": {
          "signingRequest": {
            "description": "Signing request that was created.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.SigningRequest"
          },
          "error": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.CreateWalletRequest": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "vaultUuid": {
            "type": "string",
            "title": "vault_uuid",
            "description": "UUID of the vault the wallet is created in (shown on the vault's settings page in the web app). Hyphenated UUID string.",
            "format": "uuid"
          },
          "callbackClientSignerPublicKey": {
            "type": "string",
            "title": "callback_client_signer_public_key",
            "description": "Public key of the API client signer that receives the callback. OpenSSH `authorized_keys` text of an `ssh-ed25519` key, returned exactly as sent. Plain string: `\"\"` (not `null`) when the request has no callback key. Required when creating a wallet. It must be the public key of the API client signer configured for the vault `vaultUuid` (any other key is rejected), and the caller's IP address must be in that signer's IP whitelist.",
            "example": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDmdWUo3e3/xUd0kbXCz4omzhqcYaPPYNTZ6ndqZdBAo test"
          },
          "networkType": {
            "description": "Network family of the wallet. Enum name: `NETWORK_TYPE_EVM`, `NETWORK_TYPE_BITCOIN`, `NETWORK_TYPE_TRON`, `NETWORK_TYPE_APTOS`, `NETWORK_TYPE_SUI`, `NETWORK_TYPE_SOLANA`, `NETWORK_TYPE_TON` or `NETWORK_TYPE_STELLAR`; `NETWORK_TYPE_UNKNOWN` for an unmapped network. On create `NETWORK_TYPE_UNKNOWN` is rejected.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.NetworkType"
          },
          "ref": {
            "type": "string",
            "title": "ref",
            "description": "Customer reference for the wallet, unique per organization when not empty. UTF-8, at most 500 Unicode code points; empty string when none.",
            "example": "0x4321567890abcdef4321567890abcdef123456",
            "maxLength": 500
          },
          "name": {
            "type": "string",
            "title": "name",
            "description": "Name of the wallet. UTF-8, at most 85 Unicode code points.",
            "example": "test wallet",
            "maxLength": 85
          }
        },
        "additionalProperties": false,
        "required": [
          "vaultUuid",
          "networkType",
          "callbackClientSignerPublicKey"
        ]
      },
      "mpcvault.platform.v1.CreateWalletResponse": {
        "type": "object",
        "properties": {
          "details": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Wallet"
          },
          "error": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.ECDSAHashFunction": {
        "type": "string",
        "title": "ECDSAHashFunction",
        "enum": [
          "ECDSA_HASH_FUNCTION_UNSPECIFIED",
          "ECDSA_HASH_FUNCTION_USE_MESSAGE_DIRECTLY",
          "ECDSA_HASH_FUNCTION_SHA256"
        ]
      },
      "mpcvault.platform.v1.EVMBatchSendERC20": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "chainId": {
            "type": [
              "integer",
              "string"
            ],
            "title": "chain_id",
            "format": "int64",
            "description": "Chain id of the transaction. Custom EVM networks are not supported for batch payments.",
            "example": "137"
          },
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address. It has to be in this vault."
          },
          "tokenContractAddress": {
            "type": "string",
            "title": "token_contract_address",
            "description": "Address of the ERC20 token contract. On create the contract must resolve to a known token, and the token must not be marked as spam in the vault."
          },
          "recipients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/mpcvault.platform.v1.BatchPaymentRecipient"
            },
            "title": "recipients",
            "description": "List of recipients. On create 1 to 254 recipients are required (an empty list or more than 254 is rejected), and recipient addresses must be distinct.",
            "minItems": 1,
            "maxItems": 254
          }
        },
        "additionalProperties": false,
        "required": [
          "chainId",
          "from",
          "tokenContractAddress",
          "recipients"
        ]
      },
      "mpcvault.platform.v1.EVMBatchSendNative": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "chainId": {
            "type": [
              "integer",
              "string"
            ],
            "title": "chain_id",
            "format": "int64",
            "description": "Chain id of the transaction. Custom EVM networks are not supported for batch payments.",
            "example": "137"
          },
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address. It has to be in this vault."
          },
          "recipients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/mpcvault.platform.v1.BatchPaymentRecipient"
            },
            "title": "recipients",
            "description": "List of recipients. On create 1 to 254 recipients are required (an empty list or more than 254 is rejected), and recipient addresses must be distinct.",
            "minItems": 1,
            "maxItems": 254
          }
        },
        "additionalProperties": false,
        "required": [
          "chainId",
          "from",
          "recipients"
        ]
      },
      "mpcvault.platform.v1.EVMGas": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "maxFee": {
            "description": "Maximum price per gas the sender will pay: the fee cap (`maxFeePerGas`) on EIP-1559 networks, the gas price elsewhere. Decimal string in wei per gas. `null` when not set. On create: a non-negative integer string, digits only. On a network with priority fees, `maxFee` must be greater than the stored `maxPriorityFee` when that is above zero, including the Polygon default (`\"30000000000\"`) when `maxPriorityFee` is omitted.",
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[0-9]+$"
          },
          "maxPriorityFee": {
            "description": "Maximum priority fee per gas (the tip) for EIP-1559 transactions. Decimal string in wei per gas. When `maxFee` is supplied without it on an EIP-1559 network, a default is stored and returned (`\"0\"`; `\"30000000000\"` on Polygon). `null` on networks without priority fees. On create: a non-negative integer string, digits only; ignored unless `maxFee` is also supplied, and on networks without priority fees.",
            "type": [
              "string",
              "null"
            ],
            "example": "1500000000",
            "pattern": "^[0-9]+$"
          },
          "gasLimit": {
            "description": "Maximum gas the transaction may consume. Decimal integer string in gas units. When only `maxFee` is supplied on create, MPCVault's default gas limit is stored and returned. `null` when not set. On create: a positive integer string that fits in 64 bits (`0` is rejected).",
            "type": [
              "string",
              "null"
            ],
            "example": "30000000000",
            "pattern": "^[0-9]+$"
          }
        },
        "additionalProperties": false,
        "description": "EVMGas is the gas fee settings for an EVM transaction. An object with neither `maxFee` nor `gasLimit` is treated as no custom gas settings, so `maxPriorityFee` alone has no effect."
      },
      "mpcvault.platform.v1.EVMInputDataDecode": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "function": {
            "type": "string",
            "title": "function",
            "description": "Method that was decoded, as its full canonical Solidity signature, for example `transfer(address,uint256)` (no spaces or parameter names), not just the function name.",
            "example": "function_name(arg1_type arg1_value, arg2_type arg2_value, ...)"
          },
          "args": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/mpcvault.platform.v1.EVMInputDataDecode.Argument"
            },
            "title": "args",
            "description": "Decoded call arguments. A scalar parameter is one entry. A tuple parameter is flattened to one entry per member, named `parameter.field`; an array of tuples is flattened to one entry per element and member, named `index parameter.field` (for example `0 orders.amount`) when the array has more than one element; a nested tuple can remain a single `tuple` entry. The number of entries can therefore differ from the number of ABI parameters. Empty array for a method without parameters."
          }
        },
        "additionalProperties": false,
        "required": [
          "function",
          "args"
        ]
      },
      "mpcvault.platform.v1.EVMInputDataDecode.Argument": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "title": "name",
            "description": "ABI parameter name, empty string for an unnamed parameter; a tuple member is named `parameter.field`."
          },
          "type": {
            "type": "string",
            "title": "type",
            "description": "ABI type of the argument as a string, for example `address`, `uint256`, `bytes32`, `address[]` or `tuple`."
          },
          "data": {
            "type": "string",
            "title": "data",
            "description": "Argument value as a string, by type: `address` as an EIP-55 checksummed `0x` address, `uintN` and `intN` as base-10 integers, `bool` as `true` or `false`, `string` as-is, `bytes` and `bytesN` as `0x` lowercase hex. Arrays and tuples are decoder-formatted text without a stable grammar: decode `input` yourself when you need them."
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.EVMMessage": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "chainId": {
            "type": [
              "integer",
              "string"
            ],
            "title": "chain_id",
            "format": "int64",
            "description": "Chain ID of the EVM network, for example `1` or `137`. Returned as a decimal string. Required on create: it selects the network, and an ID that matches no network is rejected (an omitted value reads as `0`).",
            "example": "137"
          },
          "from": {
            "type": "string",
            "title": "from",
            "description": "Signer wallet address in the vault. `0x`-prefixed EVM address, returned exactly as supplied by whoever created the request (API caller, dApp or custodian); never checksummed."
          },
          "type": {
            "description": "Kind of EVM message. Enum name: `TYPE_PERSONAL_SIGN` (`personal_sign`, EIP-191) or `TYPE_SIGN_TYPED_DATA` (EIP-712). On create `TYPE_UNSPECIFIED` is rejected.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMMessage.Type"
          },
          "content": {
            "type": "string",
            "title": "content",
            "format": "byte",
            "description": "Message to sign. Bytes, base64 (standard, padded) in JSON. `TYPE_PERSONAL_SIGN`: the raw message bytes, before the EIP-191 prefix is applied. `TYPE_SIGN_TYPED_DATA`: the UTF-8 text of the EIP-712 typed-data JSON, exactly as supplied. Required on create (empty is rejected). For `TYPE_SIGN_TYPED_DATA` the text must parse as EIP-712 typed-data JSON, otherwise the request is rejected."
          }
        },
        "additionalProperties": false,
        "required": [
          "type",
          "chainId",
          "from",
          "content"
        ]
      },
      "mpcvault.platform.v1.EVMMessage.Type": {
        "type": "string",
        "title": "Type",
        "enum": [
          "TYPE_UNSPECIFIED",
          "TYPE_PERSONAL_SIGN",
          "TYPE_SIGN_TYPED_DATA"
        ]
      },
      "mpcvault.platform.v1.EVMSendCustom": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "chainId": {
            "type": [
              "integer",
              "string"
            ],
            "title": "chain_id",
            "format": "int64",
            "description": "Chain ID of the EVM network, for example `1` or `137`. Returned as a decimal string. Required on create: it selects the network, and an ID that matches no supported system network and no custom network of the vault that owns the `from` wallet is rejected (an omitted value reads as `0`).",
            "example": "1"
          },
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. `0x`-prefixed 40-hex-digit address. API and app requests return it exactly as supplied when the request was created (not normalized); dApp requests return it EIP-55 checksummed."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient or contract address; empty string for contract creation. 40 hex digits with an optional `0x` prefix. API and app requests return it exactly as supplied when the request was created (not normalized); dApp requests return it EIP-55 checksummed."
          },
          "value": {
            "type": "string",
            "title": "value",
            "description": "Amount of the native coin to send with the call. Decimal string in wei; `\"0\"` when none. Required on create: send `\"0\"` for a call that carries no value; an omitted or empty value is rejected. On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "example": "1000000000000000",
            "pattern": "^[0-9]+$"
          },
          "input": {
            "type": "string",
            "title": "input",
            "format": "byte",
            "description": "Calldata of the transaction. Bytes, base64 (standard, padded) in JSON, byte-identical to what was submitted (dApp requests: the dApp's `0x` hex data, decoded). Empty string when there is no calldata. On create at most 98,224 bytes (its `0x` hex encoding is limited to 196,450 characters); may be empty.",
            "example": "qQWcuwAAAAAAAAAAAAAAAFqutgU/PpTJuaCfM2aUNefvG+rtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYloA="
          },
          "gasFee": {
            "description": "Gas settings; see `EVMGas` (fees in wei per gas, gas limit in gas units). Creating a request for a custom EVM network requires `maxFee` and `gasLimit`. dApp requests carry the fee a signer set in the MPCVault app plus the gas limit (from the dApp or MPCVault's estimate); the dApp's own fee fields are not returned. `null` when none is set.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMGas"
          },
          "nonce": {
            "description": "Transaction nonce, as a decimal string; the sender's next nonce is used when omitted, except that a request for a custom EVM network that an API client signer signs must supply it. Always `null` for API and app requests; dApp requests return the nonce converted to decimal (or one a signer set), `null` if none or not numeric.",
            "type": [
              "integer",
              "string",
              "null"
            ],
            "format": "int64",
            "example": "1"
          }
        },
        "additionalProperties": false,
        "required": [
          "chainId",
          "from",
          "value"
        ]
      },
      "mpcvault.platform.v1.EVMSendERC20": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "chainId": {
            "type": [
              "integer",
              "string"
            ],
            "title": "chain_id",
            "format": "int64",
            "description": "Chain ID of the EVM network, for example `1` or `137`. Returned as a decimal string. Required on create: it selects the network, and an ID that matches no supported system network and no custom network of the vault that owns the `from` wallet is rejected (an omitted value reads as `0`).",
            "example": "137"
          },
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. `0x`-prefixed 40-hex-digit address, returned exactly as supplied when the request was created (not normalized to EIP-55)."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. 40 hex digits with an optional `0x` prefix, in any letter case; returned exactly as supplied when the request was created (not normalized)."
          },
          "tokenContractAddress": {
            "type": "string",
            "title": "token_contract_address",
            "description": "ERC-20 token contract address. 40 hex digits with an optional `0x` prefix, in any letter case; returned exactly as supplied when the request was created (not normalized). On create the contract must resolve to a known token on the network, and the token must not be marked as spam in the vault."
          },
          "amount": {
            "type": "string",
            "title": "amount",
            "description": "Amount of tokens to send. Decimal string in the token's smallest unit (amount x 10^decimals, using the decimals of the token contract). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "example": "1000000000000000",
            "pattern": "^[0-9]+$"
          },
          "gasFee": {
            "description": "Custom gas settings; see `EVMGas` (fees in wei per gas, gas limit in gas units). Creating a request for a custom EVM network requires `maxFee` and `gasLimit`. `null` when no custom fee was set.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMGas"
          },
          "nonce": {
            "description": "Transaction nonce; the sender's next nonce is used when omitted, except that a request for a custom EVM network that an API client signer signs must supply it. Decimal string. Always `null` in responses for requests created through the API or the MPCVault app.",
            "type": [
              "integer",
              "string",
              "null"
            ],
            "format": "int64",
            "example": "1"
          }
        },
        "additionalProperties": false,
        "required": [
          "chainId",
          "from",
          "to",
          "tokenContractAddress",
          "amount"
        ]
      },
      "mpcvault.platform.v1.EVMSendNative": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "chainId": {
            "type": [
              "integer",
              "string"
            ],
            "title": "chain_id",
            "format": "int64",
            "description": "Chain ID of the EVM network, for example `1` or `137`. Returned as a decimal string. Required on create: it selects the network, and an ID that matches no supported system network and no custom network of the vault that owns the `from` wallet is rejected (an omitted value reads as `0`).",
            "example": "137"
          },
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. `0x`-prefixed 40-hex-digit address, returned exactly as supplied when the request was created (not normalized to EIP-55)."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. 40 hex digits with an optional `0x` prefix, in any letter case; returned exactly as supplied when the request was created (not normalized)."
          },
          "value": {
            "type": "string",
            "title": "value",
            "description": "Amount of the native coin to send. Decimal string in wei (the network's smallest unit, 18 decimals on standard EVM chains). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "example": "1000000000000000",
            "pattern": "^[0-9]+$"
          },
          "gasFee": {
            "description": "Custom gas settings; see `EVMGas` (fees in wei per gas, gas limit in gas units). Creating a request for a custom EVM network requires `maxFee` and `gasLimit`. `null` when no custom fee was set.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMGas"
          },
          "nonce": {
            "description": "Transaction nonce; the sender's next nonce is used when omitted, except that a request for a custom EVM network that an API client signer signs must supply it. Decimal string. Always `null` in responses for requests created through the API or the MPCVault app.",
            "type": [
              "integer",
              "string",
              "null"
            ],
            "format": "int64",
            "example": "1"
          }
        },
        "additionalProperties": false,
        "required": [
          "chainId",
          "from",
          "to",
          "value"
        ]
      },
      "mpcvault.platform.v1.Error": {
        "type": [
          "object",
          "null"
        ],
        "additionalProperties": false,
        "properties": {
          "message": {
            "type": "string",
            "title": "message"
          },
          "executeSigningRequestsErrorCode": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.ExecuteSigningRequestsErrorCode"
          },
          "serviceErrorCode": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.ServiceErrorCode"
          }
        },
        "description": "Exactly one of the two error code fields is set."
      },
      "mpcvault.platform.v1.ExecuteSigningRequestsErrorCode": {
        "type": "string",
        "title": "ExecuteSigningRequestsErrorCode",
        "enum": [
          "EXECUTE_SIGNING_REQUESTS_ERROR_CODE_UNSPECIFIED",
          "EXECUTE_SIGNING_REQUESTS_ERROR_CODE_INSUFFICIENT_FUNDS",
          "EXECUTE_SIGNING_REQUESTS_ERROR_CODE_ALREADY_DENIED"
        ]
      },
      "mpcvault.platform.v1.ExecuteSigningRequestsRequest": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "title": "uuid",
            "description": "UUID of the signing request. The request must have been created with a `callbackClientSignerPublicKey`. A request that already succeeded returns its stored result; a request that still needs signing also requires that API client signer to be connected and to hold a key of the vault.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "required": [
          "uuid"
        ]
      },
      "mpcvault.platform.v1.ExecuteSigningRequestsResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          },
          "txHash": {
            "type": "string",
            "title": "tx_hash",
            "description": "Hash of the signed transaction, only set if status is STATUS_SUCCEEDED.This does not mean that the transaction it self is successful. It only means that the signing request has been signed.",
            "example": "3Eq21vXNB5s86c62bVuUfTerseghjkuUqRPBmGRJhyTA"
          },
          "signatures": {
            "description": "Signatures of the raw message, only set if status is STATUS_SUCCEEDED.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.SignatureContainer"
          },
          "signedTransaction": {
            "type": "string",
            "title": "signed_transaction",
            "description": "Signed transaction for broadcast, only set if status is STATUS_SUCCEEDED."
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.GetBalanceRequest": {
        "type": "object",
        "properties": {
          "networkType": {
            "description": "Type of the network.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.NetworkType"
          },
          "chainId": {
            "description": "Chain id of the network. Required for `NETWORK_TYPE_EVM` (omitting it is rejected). Defaults to `1` (Aptos mainnet) for `NETWORK_TYPE_APTOS`. Optional for `NETWORK_TYPE_SOLANA`. Ignored for the other network types. Custom EVM networks are not supported.",
            "type": [
              "integer",
              "string",
              "null"
            ],
            "format": "int64",
            "example": "137"
          },
          "walletAddress": {
            "type": "string",
            "title": "wallet_address",
            "description": "Wallet address.",
            "example": "8HrKVJeFNGSJ2T2wSU6MxfMvua2MYgwH1FbRsdfrgthj"
          },
          "tokenAddress": {
            "description": "Token address,if not set, it will return the balance of the native token.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "networkType",
          "walletAddress"
        ]
      },
      "mpcvault.platform.v1.GetBalanceResponse": {
        "type": "object",
        "properties": {
          "balance": {
            "type": "string",
            "title": "balance",
            "description": "The balance is in the smallest denomination."
          },
          "error": {
            "description": "The error is null when success.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.GetBatchPaymentDetailsRequest": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "title": "uuid",
            "description": "Unique identifier of the batch payment.",
            "format": "uuid",
            "example": "9f5ee5fb-07f5-470c-a2ff-081e2d6d107a"
          }
        },
        "additionalProperties": false,
        "required": [
          "uuid"
        ]
      },
      "mpcvault.platform.v1.GetBatchPaymentDetailsResponse": {
        "type": "object",
        "properties": {
          "batchPayment": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.BatchPayment"
          },
          "error": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.GetSigningRequestDetailsRequest": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "title": "uuid",
            "description": "Unique identifier of the signing request.",
            "format": "uuid",
            "example": "bb6f129f-bbe3-4d95-9f33-c32812e3e1c4"
          }
        },
        "additionalProperties": false,
        "required": [
          "uuid"
        ]
      },
      "mpcvault.platform.v1.GetSigningRequestDetailsResponse": {
        "type": "object",
        "properties": {
          "signingRequest": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SigningRequest"
          },
          "error": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.GetSigningRequestListRequest": {
        "type": "object",
        "properties": {
          "vaultUuid": {
            "type": "string",
            "title": "vault_uuid",
            "description": "UUID of the vault whose signing requests are listed. The API token must have access to it.",
            "format": "uuid",
            "example": "9f5ee5fb-07f5-470c-a2ff-081e2d6d107a"
          },
          "page": {
            "description": "Page number, starting at 1.",
            "type": [
              "integer",
              "string",
              "null"
            ],
            "format": "int64",
            "example": 1,
            "default": 1,
            "minimum": 1
          },
          "limit": {
            "description": "Number of signing requests per page.",
            "type": [
              "integer",
              "string",
              "null"
            ],
            "format": "int64",
            "example": 10,
            "default": 10,
            "maximum": 100,
            "minimum": 1
          },
          "sortOrder": {
            "description": "Order by creation time: `SORT_ORDER_DESC` is newest first, `SORT_ORDER_ASC` is oldest first.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.GetSigningRequestListRequest.SortOrder",
            "default": "SORT_ORDER_DESC"
          }
        },
        "additionalProperties": false,
        "required": [
          "vaultUuid"
        ]
      },
      "mpcvault.platform.v1.GetSigningRequestListRequest.SortOrder": {
        "type": "string",
        "title": "SortOrder",
        "enum": [
          "SORT_ORDER_DESC",
          "SORT_ORDER_ASC"
        ]
      },
      "mpcvault.platform.v1.GetSigningRequestListResponse": {
        "type": "object",
        "properties": {
          "signingRequests": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/mpcvault.platform.v1.SigningRequest"
            },
            "title": "signing_requests"
          },
          "error": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.GetWalletInfoRequest": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "address": {
            "type": "string",
            "title": "address",
            "description": "Address of the wallet in the network."
          },
          "ref": {
            "type": "string",
            "title": "ref",
            "description": "Unique identifier for the wallet as configured by the user."
          }
        },
        "description": "Set exactly one of `address` and `ref`. A request with neither, with both, or with an empty string is rejected. `ref` is looked up within your organization."
      },
      "mpcvault.platform.v1.GetWalletInfoResponse": {
        "type": "object",
        "properties": {
          "details": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Wallet"
          },
          "error": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.GetWalletListRequest": {
        "type": "object",
        "properties": {
          "vaultUuid": {
            "type": "string",
            "title": "vault_uuid",
            "description": "UUID of the vault that the wallet was created in.",
            "format": "uuid"
          },
          "page": {
            "description": "Page number.",
            "type": [
              "integer",
              "string",
              "null"
            ],
            "format": "int64",
            "example": "1",
            "default": 1,
            "minimum": 1
          },
          "limit": {
            "description": "Number of wallets to return.",
            "type": [
              "integer",
              "string",
              "null"
            ],
            "format": "int64",
            "example": "100",
            "default": 100,
            "maximum": 1000,
            "minimum": 1
          }
        },
        "additionalProperties": false,
        "required": [
          "vaultUuid"
        ]
      },
      "mpcvault.platform.v1.GetWalletListResponse": {
        "type": "object",
        "properties": {
          "detailsList": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/mpcvault.platform.v1.Wallet"
            },
            "title": "details_list",
            "description": "List of wallets."
          },
          "error": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.KeyType": {
        "type": "string",
        "title": "KeyType",
        "enum": [
          "KEY_TYPE_UNSPECIFIED",
          "KEY_TYPE_ECC_SECP256K1",
          "KEY_TYPE_ECC_ED25519"
        ]
      },
      "mpcvault.platform.v1.NetworkType": {
        "type": "string",
        "title": "NetworkType",
        "enum": [
          "NETWORK_TYPE_UNKNOWN",
          "NETWORK_TYPE_EVM",
          "NETWORK_TYPE_BITCOIN",
          "NETWORK_TYPE_TRON",
          "NETWORK_TYPE_APTOS",
          "NETWORK_TYPE_SUI",
          "NETWORK_TYPE_SOLANA",
          "NETWORK_TYPE_TON",
          "NETWORK_TYPE_STELLAR"
        ]
      },
      "mpcvault.platform.v1.RawMessage": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Address of the vault wallet whose key signs the message, returned exactly as supplied; no address normalization is applied on any network."
          },
          "content": {
            "type": "string",
            "title": "content",
            "format": "byte",
            "description": "Raw bytes to sign. Bytes, base64 (standard, padded) in JSON, returned exactly as submitted."
          },
          "ecdsaHashFunction": {
            "description": "Hash function applied before ECDSA signing. For a secp256k1 wallet it is required and must be `ECDSA_HASH_FUNCTION_SHA256` or `ECDSA_HASH_FUNCTION_USE_MESSAGE_DIRECTLY`. For an Ed25519 wallet omit it or send `ECDSA_HASH_FUNCTION_UNSPECIFIED`: any other value is rejected, not ignored.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.ECDSAHashFunction"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "content"
        ]
      },
      "mpcvault.platform.v1.RejectSigningRequestRequest": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "title": "uuid",
            "description": "Unique identifier of the signing request.",
            "format": "uuid",
            "example": "bb6f129f-bbe3-4d95-9f33-c32812e3e1c4"
          }
        },
        "additionalProperties": false,
        "required": [
          "uuid"
        ]
      },
      "mpcvault.platform.v1.RejectSigningRequestResponse": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.RequestSource": {
        "type": [
          "object",
          "null"
        ],
        "description": "RequestSource describes where an inbound request came from. It is set only for requests that arrived from a dApp.\n It identifies the intake channel; it does not authenticate the dApp or the person behind the request.",
        "properties": {
          "type": {
            "description": "Intake channel through which the request arrived. Enum name: `TYPE_WALLET_CONNECT`, `TYPE_PLUGIN` or `TYPE_MMI`. Assigned by MPCVault from how the request was received, so the dApp cannot choose it; it identifies the channel only, not which dApp or person is behind the request, so do not use it to approve a request on its own.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.RequestSource.Type"
          },
          "website": {
            "description": "Website the dApp claimed for itself; unverified, treat it as untrusted input. UTF-8 text passed through as the dApp, plugin or custodian reported it, not validated or normalized, so it may or may not include a scheme such as `https://`. `null` when none was reported.",
            "type": [
              "string",
              "null"
            ],
            "example": "app.uniswap.org"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.RequestSource.Type": {
        "type": "string",
        "title": "Type",
        "enum": [
          "TYPE_UNSPECIFIED",
          "TYPE_WALLET_CONNECT",
          "TYPE_PLUGIN",
          "TYPE_MMI"
        ]
      },
      "mpcvault.platform.v1.ResimulationRequest": {
        "type": "object",
        "properties": {
          "signingRequestUuid": {
            "type": "string",
            "title": "signing_request_uuid",
            "description": "UUID of the signing request to be simulated. It must be pending and must have been created by the same API token.",
            "format": "uuid",
            "example": "9f5ee5fb-07f5-470c-a2ff-081e2d6d107a"
          }
        },
        "additionalProperties": false,
        "required": [
          "signingRequestUuid"
        ]
      },
      "mpcvault.platform.v1.ResimulationResponse": {
        "type": "object",
        "properties": {
          "simulation": {
            "type": "string",
            "title": "simulation",
            "format": "byte",
            "description": "Simulation of the signing request."
          },
          "error": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          }
        },
        "additionalProperties": false,
        "required": [
          "simulation"
        ]
      },
      "mpcvault.platform.v1.SUIBatchSendCoin": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address. It has to be in this vault.",
            "example": "0x7c2f7eaa24d7eab7f7fd981da47684fb349689a6324be2a9696eb2645fd4be50"
          },
          "coinTag": {
            "type": "string",
            "title": "coin_tag",
            "description": "Coin_tag identifies the coin to be sent. On create the coin must resolve to a known token, and the token must not be marked as spam in the vault.",
            "example": "tx_hash:0a1b2c3d...789e, output_index:0"
          },
          "recipients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/mpcvault.platform.v1.BatchPaymentRecipient"
            },
            "title": "recipients",
            "description": "On create 1 to 254 recipients are required (an empty list or more than 254 is rejected), and recipient addresses must be distinct.",
            "minItems": 1,
            "maxItems": 254
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "coinTag",
          "recipients"
        ]
      },
      "mpcvault.platform.v1.SUIBatchSendNative": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address. It has to be in this vault."
          },
          "recipients": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/mpcvault.platform.v1.BatchPaymentRecipient"
            },
            "title": "recipients",
            "description": "List of recipients. On create 1 to 254 recipients are required (an empty list or more than 254 is rejected), and recipient addresses must be distinct.",
            "minItems": 1,
            "maxItems": 254
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "recipients"
        ]
      },
      "mpcvault.platform.v1.ServiceErrorCode": {
        "type": "string",
        "title": "ServiceErrorCode",
        "enum": [
          "SERVICE_ERROR_CODE_UNSPECIFIED",
          "SERVICE_ERROR_CODE_ORG_SUBSCRIBED_PLAN_LIMIT_EXCEED",
          "SERVICE_ERROR_CODE_ORG_SUBSCRIBED_PLAN_EXPIRED",
          "SERVICE_ERROR_CODE_ORG_SUBSCRIBED_PLAN_NOT_SUPPORT"
        ]
      },
      "mpcvault.platform.v1.SignatureContainer": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "signatures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/mpcvault.platform.v1.SignatureContainer.SignResponse"
            },
            "title": "signatures",
            "description": "Signatures in signing order, one per signed item (Bitcoin: one per input; Solana multi-transaction requests: one per transaction). Each entry holds either `ecdsaSignature` or `eddsaSignature`."
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.SignatureContainer.ECDSASignature": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "R": {
            "type": "string",
            "title": "R",
            "description": "The `r` value of the ECDSA signature. Base-10 integer string (not hex), without `0x` or padding, up to 78 digits."
          },
          "S": {
            "type": "string",
            "title": "S",
            "description": "The `s` value of the ECDSA signature. Base-10 integer string (not hex), without `0x` or padding, up to 78 digits."
          },
          "V": {
            "type": "string",
            "title": "V",
            "description": "Recovery value. Base-10 integer string: `\"0\"` or `\"1\"` (recovery ID), except `\"27\"` or `\"28\"` for EVM message signatures approved in the MPCVault app. Carried but unused for Bitcoin."
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.SignatureContainer.SignResponse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "ecdsaSignature": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SignatureContainer.ECDSASignature",
            "description": "ECDSA signature, for EVM, TRON and Bitcoin wallets. `R`, `S` and `V` are base-10 integer strings."
          },
          "eddsaSignature": {
            "type": "string",
            "title": "eddsa_signature",
            "format": "byte",
            "description": "Ed25519 signature, for Aptos, Sui, Solana, TON and Stellar wallets: the raw 64-byte signature `R || S`. Bytes, base64 (standard, padded, 88 characters) in JSON.",
            "example": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw=="
          }
        },
        "description": "Exactly one of `ecdsaSignature` and `eddsaSignature` is set."
      },
      "mpcvault.platform.v1.SigningRequest": {
        "type": [
          "object",
          "null"
        ],
        "additionalProperties": false,
        "properties": {
          "uuid": {
            "type": "string",
            "title": "uuid",
            "description": "Unique identifier of the signing request. Lowercase hyphenated UUID string (8-4-4-4-12 hex digits).",
            "format": "uuid",
            "example": "bb6f129f-bbe3-4d95-9f33-c32812e3e1c4"
          },
          "status": {
            "description": "Status of the request. Enum name: `STATUS_PENDING`, `STATUS_SUCCEEDED` or `STATUS_FAILED`. `STATUS_SUCCEEDED` means the request completed: a transaction or message request was signed, and a vault creation or settings request reached its approval quorum. It does not mean that anything was broadcast or confirmed on-chain.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.SigningRequest.Status"
          },
          "failedReason": {
            "type": "string",
            "title": "failed_reason",
            "description": "Why the request failed, as free-form English text (for example `Denied the request`); unvalidated and not localized. Set only when `status` is `STATUS_FAILED`; empty string otherwise, including for errors recorded while `status` is `STATUS_PENDING`.",
            "example": "failed reason"
          },
          "txHash": {
            "type": "string",
            "title": "tx_hash",
            "description": "Hash of the first signed transaction; empty until signed and for messages, raw messages, wallet creation and governance requests. EVM: `0x` + 64 lowercase hex; Aptos: same, but all zeros for fee-payer and multi-agent transactions; BTC and Stellar: 64 lowercase hex, no `0x`; TRON: 64 hex, no `0x`; TON: 64 lowercase hex hash of the signed external message (not the on-chain hash); Sui: base58 digest; Solana: base58 first signature.",
            "example": "3Eq21vXNB5s86c62bVuUfTerseghjkuUqRPBmGRJhyTA"
          },
          "creationTimestamp": {
            "type": [
              "integer",
              "string"
            ],
            "title": "creation_timestamp",
            "format": "int64",
            "description": "Time the request was created, as Unix epoch milliseconds (UTC), not seconds. Returned as a decimal string, for example `\"1759400060000\"`.",
            "example": "1744274467154"
          },
          "notes": {
            "description": "Free-text note on the request. UTF-8, returned unchanged. Returned only for send, custom-transaction, raw-message and dApp transaction requests (for a dApp transaction, the note the signer added in the app), and `null` when empty or for any other kind (a `notes` value supplied when creating a message-signing request is ignored).",
            "type": [
              "string",
              "null"
            ]
          },
          "vaultUuid": {
            "description": "UUID of the vault the request was created in. Hyphenated UUID string. `null` when the request has no vault.",
            "type": [
              "string",
              "null"
            ],
            "format": "uuid",
            "example": "9f5ee5fb-07f5-470c-a2ff-081e2d6d107a"
          },
          "callbackClientSignerPublicKey": {
            "description": "Public key of the API client signer that receives the callback. OpenSSH `authorized_keys` text of an `ssh-ed25519` key, exactly as the API caller sent it (comment and whitespace included). `null` for requests without a callback key, including app-created and dApp requests.",
            "type": [
              "string",
              "null"
            ],
            "example": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDmdWUo3e3/xUd0kbXCz4omzhqcYaPPYNTZ6ndqZdBAo test"
          },
          "simulation": {
            "type": "string",
            "title": "simulation",
            "format": "byte",
            "description": "Simulation result of the transaction, provided for reference only: run your own simulation before you rely on it. `bytes`: base64 (standard, padded) in JSON. The decoded bytes are UTF-8 JSON text in a network-specific form (the provider's response, an MPCVault summary of it, or a synthetic result) that MPCVault does not define or version; see [Simulation](/api-reference/signing-request#simulation). Set only for custom transactions (EVM, Aptos, Sui, Solana, TON) and dApp transactions that are returned with a payload (EVM, Solana, Sui, Aptos, TON, Stellar); `\"\"` otherwise."
          },
          "evmInputDataDecode": {
            "description": "Best-effort decode of the call's `input`, computed by MPCVault from the target contract's explorer-verified ABI by 4-byte selector, not supplied by the dApp or caller and not re-checked against `input`. `null` when unavailable (non-EVM, unverified contract, no calldata, or a dApp request whose decode has not finished).",
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMInputDataDecode"
          },
          "signatures": {
            "description": "Signatures in signing order, once signed; `null` when none exist (for example unsigned, failed or denied requests). ECDSA networks (EVM, TRON, Bitcoin) return `ecdsaSignature` with base-10 `R`, `S`, `V`; EdDSA networks (Aptos, Sui, Solana, TON, Stellar) return `eddsaSignature`, base64 of the raw 64-byte signature.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.SignatureContainer"
          },
          "source": {
            "description": "Where an inbound dApp request came from. Set only for WalletConnect, plugin and MMI requests; `null` for requests created through the API or the MPCVault app and for governance requests.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.RequestSource"
          },
          "aptosMessage": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosMessage",
            "description": "Message to sign on Aptos."
          },
          "aptosSendCoin": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosSendCoin",
            "description": "Transfer of an Aptos coin."
          },
          "aptosSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosSendCustom",
            "description": "Custom Aptos transaction, as entry-function JSON or BCS bytes, including a transaction that a dApp asks to submit."
          },
          "aptosSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosSendNative",
            "description": "Transfer of the native APT coin."
          },
          "btcSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.BTCSendNative",
            "description": "Transfer of native BTC."
          },
          "createWallet": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.CreateWalletRequest",
            "description": "Wallet creation request (response-only)."
          },
          "evmMessage": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMMessage",
            "description": "Message or typed data to sign on EVM networks."
          },
          "evmSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMSendCustom",
            "description": "Custom EVM transaction (contract call), including transactions from dApps."
          },
          "evmSendErc20": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMSendERC20",
            "description": "Transfer of an ERC-20 token."
          },
          "evmSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.EVMSendNative",
            "description": "Transfer of the native coin of an EVM network."
          },
          "rawMessage": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.RawMessage",
            "description": "Raw bytes signed with a wallet key."
          },
          "solanaMessage": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaMessage",
            "description": "Message to sign on Solana."
          },
          "solanaSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaSendCustom",
            "description": "Custom Solana transactions, including transactions from a dApp."
          },
          "solanaSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaSendNative",
            "description": "Transfer of native SOL."
          },
          "solanaSendSplToken": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaSendSPLToken",
            "description": "Transfer of an SPL token."
          },
          "sonicSvmSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaSendCustom",
            "description": "Custom Sonic SVM transactions, including transactions from a dApp."
          },
          "sonicSvmSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaSendNative",
            "description": "Transfer of the native coin of Sonic SVM."
          },
          "sonicSvmSendSplToken": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaSendSPLToken",
            "description": "Transfer of an SPL token on Sonic SVM."
          },
          "stellarChangeTrust": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.StellarChangeTrust",
            "description": "Adds a trustline to a Stellar asset so that the account can hold it."
          },
          "swapApproval": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SwapApproval",
            "description": "Token approval that precedes a swap (\"Swap transaction - approval\" in the MPCVault app). The body has no fields yet: use the MPCVault app to view the details."
          },
          "swapSend": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SwapSend",
            "description": "Swap transaction (\"Swap transaction\" in the MPCVault app). The body has no fields yet: use the MPCVault app to view the details."
          },
          "batchPaymentApproval": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.BatchPaymentApproval",
            "description": "Token approval that precedes a batch payment (\"Batch transaction - approval\" in the MPCVault app). The body has no fields yet: use the MPCVault app to view the details."
          },
          "batchPaymentSend": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.BatchPaymentSend",
            "description": "Batch payment transaction (\"Batch transaction - send\" in the MPCVault app). The body has no fields yet: use the MPCVault app to view the details."
          },
          "fiatPayment": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.FiatPayment",
            "description": "Token transfer that pays a fiat order (\"Fiat payment\" in the MPCVault app). The body has no fields yet: use the MPCVault app to view the details."
          },
          "aptosRegisterCoin": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosRegisterCoin",
            "description": "Registers a coin on an Aptos account so that the account can receive it (\"Add coin\" in the MPCVault app). The body has no fields yet: use the MPCVault app to view the details."
          },
          "aptosOpenToken": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.AptosOpenToken",
            "description": "Lets an Aptos account receive NFTs sent to it directly (\"Enable NFT receive\" in the MPCVault app). The body has no fields yet: use the MPCVault app to view the details."
          },
          "vaultCreation": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.VaultCreation",
            "description": "Approval of a new vault (\"Create vault\" in the MPCVault app). The body has no fields yet: use the MPCVault app to view the details."
          },
          "vaultSettingUpdate": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.VaultSettingUpdate",
            "description": "Approval of a change to the settings of a vault (\"Vault setting update\" in the MPCVault app). The body has no fields yet: use the MPCVault app to view the details."
          },
          "rootKeyGeneration": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.RootKeyGeneration",
            "description": "Generation of an MPC root key, ECDSA or EdDSA (\"Generate MPC root key\" in the MPCVault app). The body has no fields yet: use the MPCVault app to view the details."
          },
          "rootKeyBackup": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.RootKeyBackup",
            "description": "Backup of the root keys of the organization (\"Org root key backup\" in the MPCVault app). The body has no fields yet: use the MPCVault app to view the details."
          },
          "keyAccessGrant": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.KeyAccessGrant",
            "description": "Grants a member or an API client signer access to a key (\"Grant key access\" in the MPCVault app). The body has no fields yet: use the MPCVault app to view the details."
          },
          "stellarSendAsset": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.StellarSendAsset",
            "description": "Transfer of a Stellar asset."
          },
          "stellarSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.StellarSendCustom",
            "description": "Custom Stellar transaction, as a base64 XDR transaction envelope, including a transaction from a dApp."
          },
          "stellarSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.StellarSendNative",
            "description": "Transfer of native XLM."
          },
          "suiMessage": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SuiMessage",
            "description": "Message to sign on Sui."
          },
          "suiSendCoin": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SuiSendCoin",
            "description": "Transfer of a Sui coin."
          },
          "suiSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SuiSendCustom",
            "description": "Custom Sui transaction, as JSON or BCS bytes, including a transaction from a dApp."
          },
          "suiSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.SuiSendNative",
            "description": "Transfer of native SUI."
          },
          "tonMessage": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TonMessage",
            "description": "ton-proof message to sign on TON."
          },
          "tonSendCustom": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TonSendCustom",
            "description": "Custom TON transaction, as ton-connect JSON, including a transaction from a dApp."
          },
          "tonSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TonSendNative",
            "description": "Transfer of native TON."
          },
          "tonSendToken": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TonSendToken",
            "description": "Transfer of a jetton."
          },
          "tronSendNative": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TronSendNative",
            "description": "Transfer of native TRX."
          },
          "tronSendTrc10": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TronSendTRC10",
            "description": "Transfer of a TRC-10 token."
          },
          "tronSendTrc20": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.TronSendTRC20",
            "description": "Transfer of a TRC-20 token."
          }
        },
        "required": [
          "uuid",
          "status",
          "txHash",
          "vaultUuid"
        ]
      },
      "mpcvault.platform.v1.SigningRequest.Status": {
        "type": "string",
        "title": "Status",
        "enum": [
          "STATUS_UNSPECIFIED",
          "STATUS_PENDING",
          "STATUS_SUCCEEDED",
          "STATUS_FAILED"
        ]
      },
      "mpcvault.platform.v1.SolanaMessage": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Signer wallet address in the vault. Base58-encoded 32-byte Solana public key; API requests return it as supplied, plugin requests return the wallet's address."
          },
          "type": {
            "description": "Kind of message. Enum name; always `TYPE_DEFAULT` in responses.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.SolanaMessage.Type"
          },
          "content": {
            "type": "string",
            "title": "content",
            "format": "byte",
            "description": "Message to sign. Bytes, base64 (standard, padded) in JSON, returned exactly as submitted; must be printable ASCII or valid UTF-8."
          }
        },
        "additionalProperties": false,
        "required": [
          "type",
          "from",
          "content"
        ]
      },
      "mpcvault.platform.v1.SolanaMessage.Type": {
        "type": "string",
        "title": "Type",
        "enum": [
          "TYPE_UNSPECIFIED",
          "TYPE_DEFAULT"
        ]
      },
      "mpcvault.platform.v1.SolanaSendCustom": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Base58-encoded 32-byte Solana public key (case-sensitive); returned exactly as supplied when the request was created (not normalized)."
          },
          "txBase64": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "title": "tx_base64",
            "description": "Serialized Solana transactions to sign (`v0` or unversioned format), each as standard base64 (padded): 1 to 5 for a request created through the API; for a dApp request one transaction, or one element per transaction of a sign-all request. Returned as stored, not re-signed and with the blockhash not refreshed: when MPCVault signs a transaction that carries no signature it replaces the recent blockhash, so the signed transaction can differ from the returned one. Whitespace is trimmed on create. On create the `from` wallet must be a signer of every transaction, and every other signer's signature must already be present (a transaction with an empty signature slot for another signer is rejected).",
            "minItems": 1,
            "maxItems": 5
          },
          "chainId": {
            "type": [
              "integer",
              "string"
            ],
            "title": "chain_id",
            "format": "int64",
            "description": "Ignored on create: the payload field you use (`solanaSend*` or `sonicSvmSend*`) selects the network. Not populated: always `\"0\"` in responses.",
            "example": "101"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "txBase64"
        ]
      },
      "mpcvault.platform.v1.SolanaSendNative": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Base58-encoded 32-byte Solana public key (case-sensitive); returned exactly as supplied when the request was created (not normalized)."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Base58-encoded 32-byte Solana public key (case-sensitive); returned exactly as supplied when the request was created (not normalized). On create `to` must not be an SPL token account (use `solanaSendSplToken`)."
          },
          "value": {
            "type": "string",
            "title": "value",
            "description": "Amount of the native coin to send. Decimal string in lamports (10^-9 SOL). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "example": "1000000000000000",
            "pattern": "^[0-9]+$"
          },
          "chainId": {
            "type": [
              "integer",
              "string"
            ],
            "title": "chain_id",
            "format": "int64",
            "description": "Ignored on create: the payload field you use (`solanaSend*` or `sonicSvmSend*`) selects the network. Not populated: always `\"0\"` in responses.",
            "example": "101"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "to",
          "value"
        ]
      },
      "mpcvault.platform.v1.SolanaSendSPLToken": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Base58-encoded 32-byte Solana public key (case-sensitive); returned exactly as supplied when the request was created (not normalized)."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Base58-encoded 32-byte Solana public key (case-sensitive); returned exactly as supplied when the request was created (not normalized). On create `to` is a wallet address or an existing token account of the same mint; a token account of another mint is rejected."
          },
          "mintAddress": {
            "type": "string",
            "title": "mint_address",
            "description": "SPL token mint address. Base58-encoded 32-byte Solana public key (case-sensitive); returned exactly as supplied when the request was created (not normalized).",
            "example": "8y5pTbJpGrUZGFN4M6ACvMbfnhXRrohRnrwannj3Noj"
          },
          "amount": {
            "type": "string",
            "title": "amount",
            "description": "Amount of tokens to send. Decimal string in the token's smallest unit (amount x 10^decimals, using the decimals of the mint). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "example": "1000000000000000",
            "pattern": "^[0-9]+$"
          },
          "chainId": {
            "type": [
              "integer",
              "string"
            ],
            "title": "chain_id",
            "format": "int64",
            "description": "Ignored on create: the payload field you use (`solanaSend*` or `sonicSvmSend*`) selects the network. Not populated: always `\"0\"` in responses.",
            "example": "101"
          },
          "decimals": {
            "description": "Number of decimals of the token; when supplied on create it must match the token's actual decimals. Returned as a decimal string, for example `\"6\"`; never `null`.",
            "type": [
              "integer",
              "string",
              "null"
            ],
            "format": "int64",
            "example": "6"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "to",
          "mintAddress",
          "amount"
        ]
      },
      "mpcvault.platform.v1.StellarChangeTrust": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Stellar strkey: a `G...` account ID (56 characters) or a `C...` contract ID. On create the account must exist, and a trustline to the asset must not already exist.",
            "example": "GAAACAQDAQCQMBYIBEFAWDANBYHRAEISCMKBKFQXDAMRUGY4DUPB7JZX"
          },
          "assetCode": {
            "type": "string",
            "title": "asset_code",
            "description": "Code of the asset to trust. 1 to 12 alphanumeric characters.",
            "example": "USDC"
          },
          "assetIssuer": {
            "type": "string",
            "title": "asset_issuer",
            "description": "Issuer account of the asset. Stellar `G...` strkey (56 characters).",
            "example": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"
          },
          "memo": {
            "type": "string",
            "title": "memo",
            "description": "Text memo attached to the transaction. UTF-8, at most 28 bytes.",
            "example": "stellar change trust"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "assetCode",
          "assetIssuer"
        ]
      },
      "mpcvault.platform.v1.SwapApproval": {
        "type": [
          "object",
          "null"
        ],
        "description": "Token approval that precedes a swap. It has no fields yet.",
        "properties": {},
        "additionalProperties": false
      },
      "mpcvault.platform.v1.SwapSend": {
        "type": [
          "object",
          "null"
        ],
        "description": "Swap transaction. It has no fields yet.",
        "properties": {},
        "additionalProperties": false
      },
      "mpcvault.platform.v1.BatchPaymentApproval": {
        "type": [
          "object",
          "null"
        ],
        "description": "Token approval that precedes a batch payment. It has no fields yet.",
        "properties": {},
        "additionalProperties": false
      },
      "mpcvault.platform.v1.BatchPaymentSend": {
        "type": [
          "object",
          "null"
        ],
        "description": "Batch payment transaction. It has no fields yet.",
        "properties": {},
        "additionalProperties": false
      },
      "mpcvault.platform.v1.FiatPayment": {
        "type": [
          "object",
          "null"
        ],
        "description": "Token transfer that pays a fiat order. It has no fields yet.",
        "properties": {},
        "additionalProperties": false
      },
      "mpcvault.platform.v1.AptosRegisterCoin": {
        "type": [
          "object",
          "null"
        ],
        "description": "Registers a coin on an Aptos account so that the account can receive it. It has no fields yet.",
        "properties": {},
        "additionalProperties": false
      },
      "mpcvault.platform.v1.AptosOpenToken": {
        "type": [
          "object",
          "null"
        ],
        "description": "Lets an Aptos account receive NFTs sent to it directly. It has no fields yet.",
        "properties": {},
        "additionalProperties": false
      },
      "mpcvault.platform.v1.VaultCreation": {
        "type": [
          "object",
          "null"
        ],
        "description": "Approval of a new vault. It has no fields yet.",
        "properties": {},
        "additionalProperties": false
      },
      "mpcvault.platform.v1.VaultSettingUpdate": {
        "type": [
          "object",
          "null"
        ],
        "description": "Approval of a change to the settings of a vault. It has no fields yet.",
        "properties": {},
        "additionalProperties": false
      },
      "mpcvault.platform.v1.RootKeyGeneration": {
        "type": [
          "object",
          "null"
        ],
        "description": "Generation of an MPC root key, ECDSA or EdDSA. It has no fields yet.",
        "properties": {},
        "additionalProperties": false
      },
      "mpcvault.platform.v1.RootKeyBackup": {
        "type": [
          "object",
          "null"
        ],
        "description": "Backup of the root keys of the organization. It has no fields yet.",
        "properties": {},
        "additionalProperties": false
      },
      "mpcvault.platform.v1.KeyAccessGrant": {
        "type": [
          "object",
          "null"
        ],
        "description": "Grants a member or an API client signer access to a key. It has no fields yet.",
        "properties": {},
        "additionalProperties": false
      },
      "mpcvault.platform.v1.StellarSendAsset": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Stellar strkey: a `G...` account ID (56 characters) or a `C...` contract ID; returned exactly as supplied when the request was created (not normalized).",
            "example": "GAAACAQDAQCQMBYIBEFAWDANBYHRAEISCMKBKFQXDAMRUGY4DUPB7JZX"
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Stellar strkey: a `G...` account ID (56 characters) or a `C...` contract ID; returned exactly as supplied when the request was created (not normalized).",
            "example": "GAAACAQDAQCQMBYIBEFAWDANBYHRAEISCMKBKFQXDAMRUGY4DUPB7JZX"
          },
          "assetCode": {
            "type": "string",
            "title": "asset_code",
            "description": "Code of the asset to send. 1 to 12 alphanumeric characters.",
            "example": "USDC"
          },
          "assetIssuer": {
            "type": "string",
            "title": "asset_issuer",
            "description": "Issuer account of the asset. Stellar `G...` strkey (56 characters).",
            "example": "GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"
          },
          "amount": {
            "type": "string",
            "title": "amount",
            "description": "Amount of the asset to send. Decimal string in whole asset units, for example `\"10.1\"`, returned as stored: a request created through the API has at most 7 fractional digits (the API truncates), a request created in the MPCVault app can have more. Not stroops and not multiplied by 10^decimals, unlike other networks. On create a negative value is rejected. The recipient must be an existing account with a trustline to the asset.",
            "example": "10.1"
          },
          "memo": {
            "type": "string",
            "title": "memo",
            "description": "Text memo attached to the transaction. UTF-8, at most 28 bytes, returned unchanged; empty string when none.",
            "example": "stellar send asset"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "to",
          "assetCode",
          "assetIssuer",
          "amount"
        ]
      },
      "mpcvault.platform.v1.StellarSendCustom": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Stellar strkey: a `G...` account ID (56 characters) or a `C...` contract ID; returned exactly as supplied when the request was created (not normalized). For a dApp transaction it is the account that signs, which can differ from the source account of the envelope.",
            "example": "GAAACAQDAQCQMBYIBEFAWDANBYHRAEISCMKBKFQXDAMRUGY4DUPB7JZX"
          },
          "txBase64": {
            "type": "string",
            "title": "tx_base64",
            "description": "Stellar transaction to sign, classic or fee-bump. Standard base64 (padded) of the XDR `TransactionEnvelope`, returned exactly as submitted.",
            "example": "AQAAAAAAAAAAAAAAAAAAAAAA$999999999999AAAAACAAQABA1kYs4/+LFCaNxckNNsERMcgSwr19dR72mxW6j8qJpGv87LKehWtuOxHGbCNbhMcl4yGWqGCnDXiSuHbqRK1X00AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQICAAEMAgAAKCGAQAAAAAAAA=="
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "txBase64"
        ]
      },
      "mpcvault.platform.v1.StellarSendNative": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Stellar strkey: a `G...` account ID (56 characters) or a `C...` contract ID; returned exactly as supplied when the request was created (not normalized).",
            "example": "GAAACAQDAQCQMBYIBEFAWDANBYHRAEISCMKBKFQXDAMRUGY4DUPB7JZX"
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Stellar strkey: a `G...` account ID (56 characters) or a `C...` contract ID; returned exactly as supplied when the request was created (not normalized).",
            "example": "GAAACAQDAQCQMBYIBEFAWDANBYHRAEISCMKBKFQXDAMRUGY4DUPB7JZX"
          },
          "value": {
            "type": "string",
            "title": "value",
            "description": "Amount of XLM to send. Decimal string in whole XLM, for example `\"10.1\"`, returned as stored: a request created through the API has at most 7 fractional digits (the API truncates), a request created in the MPCVault app can have more. Not stroops and not multiplied by 10^decimals, unlike other networks. On create a negative value is rejected, and if the recipient account does not exist yet the amount (after truncation) must be at least `1`.",
            "example": "10.1"
          },
          "memo": {
            "type": "string",
            "title": "memo",
            "description": "Text memo attached to the transaction. UTF-8, at most 28 bytes, returned unchanged; empty string when none.",
            "example": "stellar send native"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "to",
          "value"
        ]
      },
      "mpcvault.platform.v1.SuiGas": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "budget": {
            "description": "Maximum gas budget for the transaction. Decimal string in MIST (10^-9 SUI). `null` when not set. On create: a positive integer string that fits in 64 bits, digits only.",
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[0-9]+$"
          },
          "price": {
            "description": "Gas price the sender is willing to pay. Decimal string in MIST per gas unit. `null` when not set. On create: a positive integer string, digits only.",
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[0-9]+$"
          }
        },
        "additionalProperties": false,
        "description": "An object with neither `budget` nor `price` is treated as no custom gas settings."
      },
      "mpcvault.platform.v1.SuiMessage": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Signer wallet address in the vault. Sui address; API requests return it as supplied, plugin requests return the wallet's address (`0x` plus 64 lowercase hex digits)."
          },
          "type": {
            "description": "Kind of message. Enum name; always `TYPE_DEFAULT` in responses.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.SuiMessage.Type"
          },
          "content": {
            "type": "string",
            "title": "content",
            "format": "byte",
            "description": "Message to sign, as UTF-8 text. Bytes, base64 (standard, padded) in JSON."
          }
        },
        "additionalProperties": false,
        "required": [
          "type",
          "from",
          "content"
        ]
      },
      "mpcvault.platform.v1.SuiMessage.Type": {
        "type": "string",
        "title": "Type",
        "enum": [
          "TYPE_UNSPECIFIED",
          "TYPE_DEFAULT"
        ]
      },
      "mpcvault.platform.v1.SuiSendCoin": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Sui address: 64 hex digits with an optional `0x` prefix, in any letter case; returned exactly as supplied when the request was created (not padded or lowercased)."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Sui address: 64 hex digits with an optional `0x` prefix, in any letter case; returned exactly as supplied when the request was created (not padded or lowercased)."
          },
          "coinTag": {
            "type": "string",
            "title": "coin_tag",
            "description": "Type of the coin to send, `0xPACKAGE::module::STRUCT`, returned exactly as supplied (not normalized to the canonical zero-padded form). On create the native coin (`0x2::sui::SUI`) is rejected: use `suiSendNative`. The coin must resolve to a known token.",
            "example": "tx_hash:0a1b2c3d...789e, output_index:0"
          },
          "amount": {
            "type": "string",
            "title": "amount",
            "description": "Amount of coins to send. Decimal string in the coin's smallest unit (amount x 10^decimals, using the decimals of the coin). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "pattern": "^[0-9]+$"
          },
          "gasFee": {
            "description": "Custom gas settings (budget and price in MIST, see `SuiGas`). `null` when no custom fee was set.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.SuiGas"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "to",
          "coinTag",
          "amount"
        ]
      },
      "mpcvault.platform.v1.SuiSendCustom": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Sui address: 64 hex digits with an optional `0x` prefix, in any letter case; returned exactly as supplied when the request was created (not padded or lowercased)."
          },
          "payload": {
            "type": "string",
            "title": "payload",
            "format": "byte",
            "description": "Transaction to sign. Bytes, base64 (standard, padded) in JSON: UTF-8 JSON text if it was submitted as JSON, or the BCS-serialized transaction bytes exactly as submitted. MPCVault signs a BCS transaction: the one submitted, or one it builds from the submitted JSON. Fields that are missing (sender, gas payment, gas budget and price, expiration) are filled in at signing time, so the signed transaction can differ from the returned one."
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "payload"
        ]
      },
      "mpcvault.platform.v1.SuiSendNative": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Sui address: 64 hex digits with an optional `0x` prefix, in any letter case; returned exactly as supplied when the request was created (not padded or lowercased)."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Sui address: 64 hex digits with an optional `0x` prefix, in any letter case; returned exactly as supplied when the request was created (not padded or lowercased)."
          },
          "value": {
            "type": "string",
            "title": "value",
            "description": "Amount of SUI to send. Decimal string in MIST (10^-9 SUI). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "pattern": "^[0-9]+$"
          },
          "gasFee": {
            "description": "Custom gas settings (budget and price in MIST, see `SuiGas`). `null` when no custom fee was set.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.SuiGas"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "to",
          "value"
        ]
      },
      "mpcvault.platform.v1.TonMessage": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Signer wallet address in the vault. TON address in the non-bounceable user-friendly form (base64url, 48 characters, for example `UQ...`): API addresses are rewritten to it on create, plugin requests use the wallet's address in the same form."
          },
          "type": {
            "description": "Kind of message. Enum name; always `TYPE_DEFAULT` in responses.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.TonMessage.Type"
          },
          "content": {
            "type": "string",
            "title": "content",
            "format": "byte",
            "description": "ton-proof (TON Connect `ton_proof`) message to sign, as UTF-8 JSON text. Bytes, base64 (standard, padded) in JSON. API requests return it exactly as submitted; plugin requests return it re-indented with two spaces."
          }
        },
        "additionalProperties": false,
        "required": [
          "type",
          "from",
          "content"
        ]
      },
      "mpcvault.platform.v1.TonMessage.Type": {
        "type": "string",
        "title": "Type",
        "enum": [
          "TYPE_UNSPECIFIED",
          "TYPE_DEFAULT"
        ]
      },
      "mpcvault.platform.v1.TonSendCustom": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Mainnet TON address, accepted in user-friendly (base64 or base64url) or raw (`0:` hex) form and rewritten on create to the non-bounceable user-friendly form (base64url, 48 characters, for example `UQ...`), which is what is returned."
          },
          "payload": {
            "type": "string",
            "title": "payload",
            "format": "byte",
            "description": "Transaction to sign. Bytes, base64 (standard, padded) in JSON, holding UTF-8 JSON text in one of two forms: the ton-connect form (`messages`, each with `address`, `amount`, `payload` and `state_init`; `valid_until`; `from`; `network`) or the single-message form (`dataType`, `from`, `to`, `value`, `data`, `stateInit`). The text is canonicalized when the request is created (two-space indent, decimal-string amounts, integer `valid_until`, standard-base64 payload and state_init): equal in meaning, not byte-identical to what was submitted. On create the ton-connect form must contain at least one message, and each message needs a mainnet TON `address`, and its `amount` in nanoton (a non-negative integer below 2^64) is `0` when omitted."
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "payload"
        ]
      },
      "mpcvault.platform.v1.TonSendNative": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Mainnet TON address, accepted in user-friendly (base64 or base64url) or raw (`0:` hex) form and rewritten on create to the non-bounceable user-friendly form (base64url, 48 characters, for example `UQ...`), which is what is returned."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Mainnet TON address, accepted in user-friendly (base64 or base64url) or raw (`0:` hex) form and rewritten on create to the non-bounceable user-friendly form (base64url, 48 characters, for example `UQ...`), which is what is returned."
          },
          "value": {
            "type": "string",
            "title": "value",
            "description": "Amount of TON to send. Decimal string in nanoton (10^-9 TON). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "pattern": "^[0-9]+$"
          },
          "comment": {
            "type": "string",
            "title": "comment",
            "description": "Text comment attached to the transfer. UTF-8, at most 50 Unicode code points, returned unchanged; empty string when none.",
            "maxLength": 50
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "to",
          "value"
        ]
      },
      "mpcvault.platform.v1.TonSendToken": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Mainnet TON address, accepted in user-friendly (base64 or base64url) or raw (`0:` hex) form and rewritten on create to the non-bounceable user-friendly form (base64url, 48 characters, for example `UQ...`), which is what is returned."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Mainnet TON address, accepted in user-friendly (base64 or base64url) or raw (`0:` hex) form and rewritten on create to the non-bounceable user-friendly form (base64url, 48 characters, for example `UQ...`), which is what is returned."
          },
          "mintAddress": {
            "type": "string",
            "title": "mint_address",
            "description": "Jetton master contract address. Mainnet TON address, accepted in user-friendly (base64 or base64url) or raw (`0:` hex) form and rewritten on create to the non-bounceable user-friendly form (base64url, 48 characters, for example `UQ...`), which is what is returned.",
            "example": "EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs"
          },
          "amount": {
            "type": "string",
            "title": "amount",
            "description": "Amount of jettons to send. Decimal string in the jetton's smallest unit (amount x 10^decimals, using the decimals of the jetton). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "pattern": "^[0-9]+$"
          },
          "comment": {
            "type": "string",
            "title": "comment",
            "description": "Text comment attached to the transfer. UTF-8, at most 50 Unicode code points, returned unchanged; empty string when none.",
            "example": "ton send token comment",
            "maxLength": 50
          },
          "decimals": {
            "description": "Number of decimals of the jetton. Returned as a decimal string; never `null`. When supplied on create it must equal the jetton's actual decimals; a mismatch is rejected.",
            "type": [
              "integer",
              "string",
              "null"
            ],
            "format": "int64",
            "example": "6"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "to",
          "mintAddress",
          "amount"
        ]
      },
      "mpcvault.platform.v1.TronSendNative": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Tron address in base58check form, starting with `T`; returned exactly as supplied when the request was created (not normalized)."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Tron address in base58check form, starting with `T`; returned exactly as supplied when the request was created (not normalized). On create `from` and `to` must differ (compared case-insensitively).",
            "example": "TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7"
          },
          "value": {
            "type": "string",
            "title": "value",
            "description": "Amount of TRX to send. Decimal string in sun (10^-6 TRX). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "example": "1000000000000000",
            "pattern": "^[0-9]+$"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "to",
          "value"
        ]
      },
      "mpcvault.platform.v1.TronSendTRC10": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Tron address in base58check form, starting with `T`; returned exactly as supplied when the request was created (not normalized)."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Tron address in base58check form, starting with `T`; returned exactly as supplied when the request was created (not normalized). On create `from` and `to` must differ (compared case-insensitively).",
            "example": "TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7"
          },
          "assetName": {
            "type": "string",
            "title": "asset_name",
            "description": "Identifier of the TRC-10 token to send: the numeric asset ID as a digit string (not a ticker or name), returned as supplied.",
            "example": "ETH"
          },
          "amount": {
            "type": "string",
            "title": "amount",
            "description": "Amount of tokens to send. Decimal string in the token's smallest unit (amount x 10^decimals, using the decimals of the TRC-10 token). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "pattern": "^[0-9]+$"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "to",
          "assetName",
          "amount"
        ]
      },
      "mpcvault.platform.v1.TronSendTRC20": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "from": {
            "type": "string",
            "title": "from",
            "description": "Sender wallet address in the vault. Tron address in base58check form, starting with `T`; returned exactly as supplied when the request was created (not normalized)."
          },
          "to": {
            "type": "string",
            "title": "to",
            "description": "Recipient address. Tron address in base58check form, starting with `T`; returned exactly as supplied when the request was created (not normalized). On create `from` and `to` must differ (compared case-insensitively)."
          },
          "contractAddress": {
            "type": "string",
            "title": "contract_address",
            "description": "TRC-20 token contract address. Tron address in base58check form, starting with `T`; returned exactly as supplied when the request was created (not normalized).",
            "example": "TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t"
          },
          "amount": {
            "type": "string",
            "title": "amount",
            "description": "Amount of tokens to send. Decimal string in the token's smallest unit (amount x 10^decimals, using the decimals of the token). On create: a non-negative integer string, digits only (`0` is accepted; no sign, decimal point, exponent or `0x` prefix).",
            "pattern": "^[0-9]+$"
          },
          "feeLimit": {
            "description": "Maximum fee the sender is willing to pay. Decimal string in sun. `null` when not set. On create: a positive integer string that fits in 64 bits (`0` is rejected).",
            "type": [
              "string",
              "null"
            ],
            "pattern": "^[0-9]+$"
          }
        },
        "additionalProperties": false,
        "required": [
          "from",
          "to",
          "contractAddress",
          "amount"
        ]
      },
      "mpcvault.platform.v1.Wallet": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "vaultUuid": {
            "type": "string",
            "title": "vault_uuid",
            "description": "The UUID of the vault the wallet belongs to.",
            "example": "9f5ee5fb-07f5-470c-a2ff-081e2d6d107a",
            "format": "uuid"
          },
          "keyType": {
            "description": "The signature algorithm of the wallet's key.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.KeyType",
            "example": "KEY_TYPE_ECC_ED25519"
          },
          "keyPath": {
            "type": "string",
            "title": "key_path",
            "description": "The derivation path of the wallet's key.",
            "example": "path/to/key"
          },
          "publicKey": {
            "type": "string",
            "title": "public_key",
            "format": "byte",
            "description": "The wallet's public key, base64-encoded."
          },
          "networkType": {
            "description": "The network the wallet is on.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.NetworkType",
            "example": "NETWORK_TYPE_EVM"
          },
          "address": {
            "type": "string",
            "title": "address",
            "description": "The wallet's on-chain address."
          },
          "ref": {
            "type": "string",
            "title": "ref",
            "description": "The customer-defined reference for the wallet.",
            "example": "0x4321567890abcdef4321567890abcdef123456"
          },
          "status": {
            "description": "The wallet's current status: STATUS_PENDING, STATUS_ACTIVE, or STATUS_ARCHIVED.",
            "$ref": "#/components/schemas/mpcvault.platform.v1.Wallet.Status",
            "example": "STATUS_ACTIVE"
          },
          "name": {
            "type": "string",
            "title": "name",
            "description": "The wallet's name.",
            "example": "test wallet"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.platform.v1.Wallet.Status": {
        "type": "string",
        "title": "Status",
        "enum": [
          "STATUS_UNSPECIFIED",
          "STATUS_PENDING",
          "STATUS_ACTIVE",
          "STATUS_ARCHIVED"
        ]
      },
      "mpcvault.platform.v1.UpdateWalletRequest": {
        "type": "object",
        "required": [
          "address"
        ],
        "properties": {
          "address": {
            "type": "string",
            "title": "address",
            "description": "The on-chain address of the wallet to update."
          },
          "name": {
            "type": "string",
            "title": "name",
            "description": "The wallet's new name. Empty means no change. Leading and trailing whitespace is removed and runs of whitespace become one space before the name is checked: the result must be 1 to 85 Unicode code points and must not contain `:`, `<` or `>`.",
            "example": "my wallet"
          },
          "status": {
            "type": "string",
            "title": "status",
            "description": "The wallet's new status. Empty means no change. Exactly `STATUS_ACTIVE` or `STATUS_ARCHIVED` (case-sensitive); any other value is rejected. Use `STATUS_ARCHIVED` to archive a wallet and `STATUS_ACTIVE` to unarchive an archived wallet, which must fit the organization's wallet limit. A wallet that is still pending cannot change status.",
            "example": "STATUS_ACTIVE"
          }
        },
        "additionalProperties": false,
        "description": "Locates a wallet by `address`. At least one of `name` and `status` must be set; both can be set together."
      },
      "mpcvault.platform.v1.UpdateWalletResponse": {
        "type": "object",
        "properties": {
          "details": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Wallet"
          },
          "error": {
            "$ref": "#/components/schemas/mpcvault.platform.v1.Error"
          }
        },
        "additionalProperties": false
      },
      "mpcvault.sweep.v1.CreateDepositWalletRequest": {
        "type": "object",
        "required": [
          "network",
          "ref"
        ],
        "properties": {
          "network": {
            "type": "string",
            "description": "Logical network. `EVM` or `SOLANA`, case-insensitive; surrounding whitespace is ignored. Any other value is rejected.",
            "example": "EVM"
          },
          "ref": {
            "type": "string",
            "description": "Unique business reference, 1-128 characters, no `:` `<` `>` `;`. `<network>_<account_id>` recommended.",
            "example": "customer-wallet-001"
          }
        },
        "description": "The API token must have a sweep configuration with a valid target address for the network, otherwise the request is rejected."
      },
      "mpcvault.sweep.v1.CreateDepositWalletResponse": {
        "type": "object",
        "properties": {
          "address": {
            "type": "string",
            "description": "The deposit address. An EVM address works on all five supported chains.",
            "example": "0x59b4a4Fd7bC1BAA0e6BB65cBFe3e2E4dbFa5E0a1"
          },
          "network": {
            "type": "string",
            "description": "Logical network of the address.",
            "example": "EVM"
          },
          "ref": {
            "type": "string",
            "description": "The business reference the address is bound to.",
            "example": "customer-wallet-001"
          }
        }
      },
      "mpcvault.sweep.v1.AddWatchAddressRequest": {
        "type": "object",
        "required": [
          "network",
          "address"
        ],
        "properties": {
          "network": {
            "type": "string",
            "description": "Network of the address. Supports `TRON`, case-insensitive.",
            "example": "TRON"
          },
          "address": {
            "type": "string",
            "description": "TRON address to watch, in base58check form starting with `T`. Surrounding whitespace is ignored. Validated and normalized to checksum form.",
            "example": "TLa2f6VPqDgRE67v1736s7bJ8Ray5wYjU7"
          }
        },
        "description": "The API token must have a webhook configured for the TRON route, otherwise the request is rejected."
      },
      "mpcvault.sweep.v1.AddWatchAddressResponse": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "description": "Identifies the watch record.",
            "example": "8f14e45f-ceea-4e70-bd0f-9c6f23b2a1d0",
            "format": "uuid"
          },
          "address": {
            "type": "string",
            "description": "The registered address in checksum form.",
            "example": "TSvcVista6bxr7WFmDMWKLzTBnF4N34u9v"
          },
          "network": {
            "type": "string",
            "example": "TRON"
          }
        }
      }
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "paths": {
    "/v1/createBatchPayment": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "CreateBatchPayment",
        "description": "CreateBatchPayment creates a batch payment. You will need to complete the batch payment using the MPCVault web app.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.CreateBatchPayment",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.CreateBatchPaymentRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.CreateBatchPaymentResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/createSigningRequest": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "CreateSigningRequest",
        "description": "CreateSigningRequest creates a signing request. The signing request can be completed using the MPCVault mobile app or using the API client signer.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.CreateSigningRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.CreateSigningRequestRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.CreateSigningRequestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/createWallet": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "CreateWallet",
        "description": "CreateWallet creates a wallet. Wallets created will be EOA wallets. You are responsible for completing a sanity tests before using the wallet.\n While the response contains the public key, you are strongly discouraged from using it to generate the wallet address yourself. Instead, use the address returned in the response.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.CreateWallet",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.CreateWalletRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.CreateWalletResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/executeSigningRequests": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "ExecuteSigningRequests",
        "description": "ExecuteSigningRequests signs a signing request. The signing request can be created via the API or manually.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.ExecuteSigningRequests",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.ExecuteSigningRequestsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.ExecuteSigningRequestsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/getBalance": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "GetBalance",
        "description": "GetBalance returns the details of a asset balance.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.GetBalance",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.GetBalanceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.GetBalanceResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/getBatchPaymentDetails": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "GetBatchPaymentDetails",
        "description": "GetBatchPaymentDetails returns the details of a batch payment including the signing requests.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.GetBatchPaymentDetails",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.GetBatchPaymentDetailsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.GetBatchPaymentDetailsResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/getSigningRequestDetails": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "GetSigningRequestDetails",
        "description": "GetSigningRequestDetails returns the details of a signing request.\n It will contain the signing request status and the transaction hash if the signing request was completed.\n Requests created in the MPCVault app or by a connected dApp (WalletConnect, plugin or MMI) are returned in the same shape as API-created requests.\n The payload member that is set tells what kind of request it is: a dApp transaction is returned as the custom transaction of its network\n (evm_send_custom, solana_send_custom, sui_send_custom, aptos_send_custom, ton_send_custom or stellar_send_custom) and a dApp message as the\n message of its network (evm_message, solana_message, ...). source is set only for requests that arrived from a dApp.\n A dApp request returned without a payload member is not fully supported by this API yet: use the MPCVault app to view its details.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.GetSigningRequestDetails",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.GetSigningRequestDetailsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.GetSigningRequestDetailsResponse"
                },
                "example": {
                  "signingRequest": {
                    "uuid": "b7d1c6e2-3f0a-4c52-9a41-5e8f2d6b1a07",
                    "status": "STATUS_PENDING",
                    "failedReason": "",
                    "txHash": "",
                    "creationTimestamp": "1759400600000",
                    "evmSendCustom": {
                      "chainId": "1",
                      "from": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F",
                      "to": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
                      "value": "0",
                      "input": "qQWcuwAAAAAAAAAAAAAAAFqutgU/PpTJuaCfM2aUNefvG+rtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYloA=",
                      "gasFee": {
                        "maxFee": null,
                        "maxPriorityFee": null,
                        "gasLimit": "65000"
                      },
                      "nonce": "42"
                    },
                    "notes": "Pay vendor invoice in USDT",
                    "vaultUuid": "9f5ee5fb-07f5-470c-a2ff-081e2d6d107a",
                    "callbackClientSignerPublicKey": null,
                    "simulation": "eyJ0cmFuc2FjdGlvbiI6eyJzdGF0dXMiOnRydWUsImdhc191c2VkIjo0NjEyM319",
                    "evmInputDataDecode": {
                      "function": "transfer(address,uint256)",
                      "args": [
                        {
                          "name": "to",
                          "type": "address",
                          "data": "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed"
                        },
                        {
                          "name": "value",
                          "type": "uint256",
                          "data": "10000000"
                        }
                      ]
                    },
                    "signatures": null,
                    "source": {
                      "type": "TYPE_WALLET_CONNECT",
                      "website": "app.uniswap.org"
                    }
                  },
                  "error": null
                }
              }
            }
          }
        }
      }
    },
    "/v1/getSigningRequestList": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "GetSigningRequestList",
        "description": "GetSigningRequestList returns the signing requests details.\n It will contain the signing request status and the transaction hash if the signing request was completed.\n Each signing request carries the same payload as GetSigningRequestDetails.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.GetSigningRequestList",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.GetSigningRequestListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.GetSigningRequestListResponse"
                },
                "example": {
                  "signingRequests": [
                    {
                      "uuid": "b7d1c6e2-3f0a-4c52-9a41-5e8f2d6b1a07",
                      "status": "STATUS_PENDING",
                      "failedReason": "",
                      "txHash": "",
                      "creationTimestamp": "1759400600000",
                      "evmSendCustom": {
                        "chainId": "1",
                        "from": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F",
                        "to": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
                        "value": "0",
                        "input": "qQWcuwAAAAAAAAAAAAAAAFqutgU/PpTJuaCfM2aUNefvG+rtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYloA=",
                        "gasFee": {
                          "maxFee": null,
                          "maxPriorityFee": null,
                          "gasLimit": "65000"
                        },
                        "nonce": "42"
                      },
                      "notes": "Pay vendor invoice in USDT",
                      "vaultUuid": "9f5ee5fb-07f5-470c-a2ff-081e2d6d107a",
                      "callbackClientSignerPublicKey": null,
                      "simulation": "eyJ0cmFuc2FjdGlvbiI6eyJzdGF0dXMiOnRydWUsImdhc191c2VkIjo0NjEyM319",
                      "evmInputDataDecode": {
                        "function": "transfer(address,uint256)",
                        "args": [
                          {
                            "name": "to",
                            "type": "address",
                            "data": "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed"
                          },
                          {
                            "name": "value",
                            "type": "uint256",
                            "data": "10000000"
                          }
                        ]
                      },
                      "signatures": null,
                      "source": {
                        "type": "TYPE_WALLET_CONNECT",
                        "website": "app.uniswap.org"
                      }
                    },
                    {
                      "uuid": "3c0d9f5e-6a21-4e7b-8d1c-0f4a7b2e9c55",
                      "status": "STATUS_SUCCEEDED",
                      "failedReason": "",
                      "txHash": "0x8f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f708192a3b4c5d6e7f8",
                      "creationTimestamp": "1759400120000",
                      "evmSendErc20": {
                        "chainId": "1",
                        "from": "0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
                        "to": "0x71c7656ec7ab88b098defb751b7401b5f6d8976f",
                        "tokenContractAddress": "0xdac17f958d2ee523a2206206994597c13d831ec7",
                        "amount": "250000000",
                        "gasFee": null,
                        "nonce": null
                      },
                      "notes": "Payroll",
                      "vaultUuid": "9f5ee5fb-07f5-470c-a2ff-081e2d6d107a",
                      "callbackClientSignerPublicKey": null,
                      "simulation": "",
                      "evmInputDataDecode": null,
                      "signatures": null,
                      "source": null
                    }
                  ],
                  "error": null
                }
              }
            }
          }
        }
      }
    },
    "/v1/getWalletInfo": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "GetWalletInfo",
        "description": "GetWalletInfo returns the details of a wallet.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.GetWalletInfo",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.GetWalletInfoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.GetWalletInfoResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/getWalletList": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "GetWalletList",
        "description": "GetWalletList returns the wallets details.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.GetWalletList",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.GetWalletListRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.GetWalletListResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/rejectSigningRequest": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "RejectSigningRequest",
        "description": "RejectSigningRequest rejects a signing request. Once a signing request is rejected, it cannot be re-opened.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.RejectSigningRequest",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.RejectSigningRequestRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.RejectSigningRequestResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/resimulation": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "Resimulation",
        "description": "Resimulation returns the transaction simulation.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.Resimulation",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.ResimulationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.ResimulationResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/updateWallet": {
      "post": {
        "tags": [
          "mpcvault.platform.v1.PlatformAPI"
        ],
        "summary": "UpdateWallet",
        "description": "Update a wallet's name or status by its address. Provide at least one of the two.",
        "operationId": "mpcvault.platform.v1.PlatformAPI.UpdateWallet",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.platform.v1.UpdateWalletRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.platform.v1.UpdateWalletResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sweep/wallets": {
      "post": {
        "tags": [
          "mpcvault.sweep.v1.SweepAPI"
        ],
        "summary": "CreateDepositWallet",
        "description": "Creates a dedicated deposit address bound to your business reference. Idempotent on (API token, network, ref): repeated calls return the same address. An EVM address works on all five supported chains.",
        "operationId": "mpcvault.sweep.v1.SweepAPI.CreateDepositWallet",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.sweep.v1.CreateDepositWalletRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.sweep.v1.CreateDepositWalletResponse"
                }
              }
            }
          }
        }
      }
    },
    "/v1/sweep/addWatchAddress": {
      "post": {
        "tags": [
          "mpcvault.sweep.v1.SweepAPI"
        ],
        "summary": "AddWatchAddress",
        "description": "Registers a TRON address for monitoring. No wallet is created, MPCVault holds no keys, and no assets are moved. Re-adding the same address with the same API token is idempotent.",
        "operationId": "mpcvault.sweep.v1.SweepAPI.AddWatchAddress",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/mpcvault.sweep.v1.AddWatchAddressRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Success",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/mpcvault.sweep.v1.AddWatchAddressResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "mpcvault.platform.v1.PlatformAPI"
    },
    {
      "name": "mpcvault.sweep.v1.SweepAPI",
      "description": "Deposit address creation and TRON watch address registration for the Sweep product."
    }
  ]
}