> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mpcvault.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GetPendingSigningRequests

> Get all requests awaiting your API user's approval or a bound ClientSigner's signature.

Returns the ongoing signing requests with an action for the authenticated API user: an approval still needed by the current policy, or signing that is ready for an eligible bound ClientSigner. It is an action queue, rather than a list of every pending request.

Set `vaultUuid` to query one accessible vault. Omit it or send an empty string to query all vaults the token can access in its organization. Requests without a vault are excluded.

```json theme={null}
{}
```

The response contains all matching requests; there is no pagination or truncation. Each request uses the same payload and field visibility as [GetSigningRequestList](https://docs.mpcvault.com/api-reference/rest/get-signing-request-list.md), with its [pendingOperation](https://docs.mpcvault.com/api-reference/signing-request.md#pending-operation). A query failure or response-size limit returns an RPC error instead of a partial list.

This call only reads the workflow state. Use [ApproveSigningRequest](https://docs.mpcvault.com/api-reference/rest/approve-signing-request.md) for an `approve` action or [ExecuteSigningRequests](https://docs.mpcvault.com/api-reference/rest/execute-signing-requests.md) for eligible wallet signing. The action is a current hint; the modifying call revalidates permissions and policy.


## OpenAPI

````yaml openapi.json POST /v1/getPendingSigningRequests
openapi: 3.1.0
info:
  title: mpcvault.platform.v1
  version: 0.0.1
servers:
  - url: https://api.mpcvault.com
    description: MPCVault API Server
security:
  - ApiKeyAuth: []
tags:
  - name: mpcvault.platform.v1.PlatformAPI
  - name: mpcvault.sweep.v1.SweepAPI
    description: >-
      Deposit address creation and TRON watch address registration for the Sweep
      product.
paths:
  /v1/getPendingSigningRequests:
    post:
      tags:
        - mpcvault.platform.v1.PlatformAPI
      summary: GetPendingSigningRequests
      description: >-
        GetPendingSigningRequests returns all requests awaiting the API user's
        approval or ready for their bound ClientSigner.
      operationId: mpcvault.platform.v1.PlatformAPI.GetPendingSigningRequests
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/mpcvault.platform.v1.GetPendingSigningRequestsRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/mpcvault.platform.v1.GetPendingSigningRequestsResponse
components:
  schemas:
    mpcvault.platform.v1.GetPendingSigningRequestsRequest:
      type: object
      properties:
        vaultUuid:
          type: string
          description: >-
            Vault_uuid selects one accessible vault in the API token's
            organization, or all accessible vaults when empty. Requests without
            a vault are excluded.
          format: uuid
          example: <string>
      description: >-
        GetPendingSigningRequestsRequest only queries workflow actions; it does
        not prepare, approve, sign or reject. A returned sign operation does not
        grant ExecuteSigningRequests permission.
      additionalProperties: false
    mpcvault.platform.v1.GetPendingSigningRequestsResponse:
      type: object
      properties:
        signingRequests:
          type: array
          items:
            $ref: '#/components/schemas/mpcvault.platform.v1.SigningRequest'
          description: >-
            Signing_requests contains all ongoing requests with a
            pending_operation; no pagination or truncation. Uses the same
            payload and field visibility as GetSigningRequestList. Evaluation
            failures or the response-size limit return an RPC error instead of
            partial results.
        error:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.Error'
            - type: 'null'
      additionalProperties: false
    mpcvault.platform.v1.SigningRequest:
      type: object
      properties:
        uuid:
          type: string
          description: >-
            Unique identifier of the signing request. Lowercase hyphenated UUID
            string (8-4-4-4-12 hex digits).
          format: uuid
          example: <string>
        status:
          enum:
            - STATUS_UNSPECIFIED
            - STATUS_PENDING
            - STATUS_SUCCEEDED
            - STATUS_FAILED
          type: string
          description: >-
            Operation status: STATUS_PENDING, STATUS_SUCCEEDED or STATUS_FAILED.
            STATUS_SUCCEEDED means signing completed for transactions/messages,
            without confirming broadcast or on-chain execution. Management
            requests may succeed without signatures or transactions.
          format: enum
        failedReason:
          type: string
          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
          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: <string>
        creationTimestamp:
          type: string
          description: >-
            Time the request was created, as Unix epoch milliseconds (UTC), not
            seconds. Returned as a decimal string, for example
            `"1759400060000"`.
          example: '1744274467154'
          format: uint64
        evmSendNative:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMSendNative'
            - type: 'null'
          description: Transfer of the native coin of an EVM network.
        evmSendErc20:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMSendERC20'
            - type: 'null'
          description: Transfer of an ERC-20 token.
        evmSendCustom:
          description: >-
            Custom EVM transaction (contract call), including transactions from
            dApps.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMSendCustom'
            - type: 'null'
        btcSendNative:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.BTCSendNative'
            - type: 'null'
          description: Transfer of native BTC.
        tronSendNative:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.TronSendNative'
            - type: 'null'
          description: Transfer of native TRX.
        tronSendTrc10:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.TronSendTRC10'
            - type: 'null'
          description: Transfer of a TRC-10 token.
        tronSendTrc20:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.TronSendTRC20'
            - type: 'null'
          description: Transfer of a TRC-20 token.
        aptosSendNative:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosSendNative'
            - type: 'null'
          description: Transfer of the native APT coin.
        aptosSendCoin:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosSendCoin'
            - type: 'null'
          description: Transfer of an Aptos coin.
        aptosSendCustom:
          description: >-
            Custom Aptos transaction, as entry-function JSON or BCS bytes,
            including a transaction that a dApp asks to submit.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosSendCustom'
            - type: 'null'
        suiSendNative:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SuiSendNative'
            - type: 'null'
          description: Transfer of native SUI.
        suiSendCoin:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SuiSendCoin'
            - type: 'null'
          description: Transfer of a Sui coin.
        suiSendCustom:
          description: >-
            Custom Sui transaction, as JSON or BCS bytes, including a
            transaction from a dApp.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SuiSendCustom'
            - type: 'null'
        solanaSendNative:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaSendNative'
            - type: 'null'
          description: Transfer of native SOL.
        solanaSendSplToken:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaSendSPLToken'
            - type: 'null'
          description: Transfer of an SPL token.
        createWallet:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.CreateWalletRequest'
            - type: 'null'
          description: Wallet creation request (response-only).
        evmMessage:
          description: Message or typed data to sign on EVM networks.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMMessage'
            - type: 'null'
        aptosMessage:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosMessage'
            - type: 'null'
          description: Message to sign on Aptos.
        solanaMessage:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaMessage'
            - type: 'null'
          description: Message to sign on Solana.
        rawMessage:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.RawMessage'
            - type: 'null'
          description: Raw bytes signed with a wallet key.
        suiMessage:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SuiMessage'
            - type: 'null'
          description: Message to sign on Sui.
        tonSendNative:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.TonSendNative'
            - type: 'null'
          description: Transfer of native TON.
        tonSendToken:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.TonSendToken'
            - type: 'null'
          description: Transfer of a jetton.
        tonSendCustom:
          description: >-
            Custom TON transaction, as ton-connect JSON, including a transaction
            from a dApp.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.TonSendCustom'
            - type: 'null'
        tonMessage:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.TonMessage'
            - type: 'null'
          description: ton-proof message to sign on TON.
        solanaSendCustom:
          description: Custom Solana transactions, including transactions from a dApp.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaSendCustom'
            - type: 'null'
        sonicSvmSendNative:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaSendNative'
            - type: 'null'
          description: Transfer of the native coin of Sonic SVM.
        sonicSvmSendSplToken:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaSendSPLToken'
            - type: 'null'
          description: Transfer of an SPL token on Sonic SVM.
        sonicSvmSendCustom:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaSendCustom'
            - type: 'null'
          description: Custom Sonic SVM transactions, including transactions from a dApp.
        stellarSendNative:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.StellarSendNative'
            - type: 'null'
          description: Transfer of native XLM.
        stellarSendAsset:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.StellarSendAsset'
            - type: 'null'
          description: Transfer of a Stellar asset.
        stellarSendCustom:
          description: >-
            Custom Stellar transaction, as a base64 XDR transaction envelope,
            including a transaction from a dApp.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.StellarSendCustom'
            - type: 'null'
        stellarChangeTrust:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.StellarChangeTrust'
            - type: 'null'
          description: Adds a trustline to a Stellar asset so that the account can hold it.
        swapApproval:
          description: >-
            Fungible-asset spending authorization before a swap, with separate
            stored quote context. Not accepted by CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SwapApproval'
            - type: 'null'
        swapSend:
          description: >-
            Swap transaction with separate stored quote context. Not accepted by
            CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SwapSend'
            - type: 'null'
        batchPaymentApproval:
          description: >-
            Fungible-asset spending authorization before a batch payment;
            planned recipients and amounts are separate context, not transfers
            performed by approval. Not accepted by CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.BatchPaymentApproval'
            - type: 'null'
        batchPaymentSend:
          description: >-
            Batch-payment chain transaction, with stored gas limit and nonce.
            Not accepted by CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.BatchPaymentSend'
            - type: 'null'
        fiatPayment:
          description: >-
            Token transfer funding a fiat order, with whole-unit source/target
            amounts and a recipient display summary. Full account/routing
            numbers and other sensitive beneficiary data are omitted. Not
            accepted by CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.FiatPayment'
            - type: 'null'
        aptosRegisterCoin:
          description: >-
            Coin registration on an Aptos account, with coin type and gas
            settings. Not accepted by CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosRegisterCoin'
            - type: 'null'
        aptosOpenToken:
          description: >-
            Enables direct NFT receipt on an Aptos account. Not accepted by
            CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosOpenToken'
            - type: 'null'
        vaultCreation:
          description: >-
            Approval of a new vault, with name and derivation path. Not accepted
            by CreateSigningRequest or ExecuteSigningRequests.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.VaultCreation'
            - type: 'null'
        vaultSettingUpdate:
          description: >-
            Empty marker for a vault settings change; setting details are not
            exposed. Not accepted by CreateSigningRequest or
            ExecuteSigningRequests.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.VaultSettingUpdate'
            - type: 'null'
        rootKeyGeneration:
          description: >-
            MPC root-key generation, with key type and derivation path. Not
            accepted by CreateSigningRequest or ExecuteSigningRequests.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.RootKeyGeneration'
            - type: 'null'
        rootKeyBackup:
          description: >-
            Organization root-key backup public encryption-recipient metadata;
            ciphertext is never returned. Not accepted by CreateSigningRequest
            or ExecuteSigningRequests.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.RootKeyBackup'
            - type: 'null'
        keyAccessGrant:
          description: >-
            Member or ClientSigner key-access grant. An unset vaultUuid
            identifies organization scope. Not accepted by CreateSigningRequest
            or ExecuteSigningRequests.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.KeyAccessGrant'
            - type: 'null'
        stellarMessage:
          description: >-
            Existing dApp Stellar message with raw stored content. Not accepted
            by CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.StellarMessage'
            - type: 'null'
        stellarAuthEntry:
          description: >-
            Stellar authorization entry, including dApp SIGN_AUTH_ENTRY
            messages. Not accepted by CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.StellarAuthEntry'
            - type: 'null'
        stellarChallenge:
          description: >-
            Existing dApp Stellar SEP-10 CHALLENGE_TRANSACTION. Not accepted by
            CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.StellarChallenge'
            - type: 'null'
        aptosSignTransaction:
          description: >-
            Existing dApp Aptos SIGN_TRANSACTION; co-signs a whole transaction
            rather than an AptosSendCustom payload. Not accepted by
            CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosSignTransaction'
            - type: 'null'
        dappRequest:
          description: >-
            Stored fallback for a dApp transaction or message without a
            chain-specific payload. The claimed website is carried separately in
            source.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.DAppRequest'
            - type: 'null'
        notes:
          type:
            - string
            - 'null'
          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).
          example: send 1 eth to <string>
        vaultUuid:
          type:
            - string
            - 'null'
          description: >-
            UUID of the associated vault. null for organization-scoped requests,
            including root-key generation, backup and organization-level
            key-access grants.
          format: uuid
          example: <string>
        callbackClientSignerPublicKey:
          type:
            - string
            - 'null'
          description: >-
            Stored callback ClientSigner public key in SSH authorized-key form,
            when present. This field can be empty; it does not by itself
            determine whether an existing request is executable.
          example: <string>
        simulation:
          type: string
          description: >-
            Available transaction simulation, returned only by
            GetSigningRequestDetails. bytes: standard padded Base64 in REST
            JSON. Decoded bytes are UTF-8 JSON text in a network-specific form.
            Reference information only: run an independent simulation before
            relying on it; see
            [Simulation](/api-reference/signing-request#simulation).
          format: byte
          example: <string>
          readOnly: true
        evmInputDataDecode:
          description: >-
            Available best-effort EVM input decode. Returned only by
            GetSigningRequestDetails. null when unavailable; verify
            independently against the original transaction input.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMInputDataDecode'
            - type: 'null'
          readOnly: true
        signatures:
          description: >-
            Available complete signature results after signing, in
            SignatureContainer format. Returned only to full-access tokens,
            including list and batch-payment responses; never to read-only
            tokens. These are complete signatures, not MPC shares.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SignatureContainer'
            - type: 'null'
          readOnly: true
        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.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.RequestSource'
            - type: 'null'
        signedTransaction:
          type: string
          description: >-
            Available serialized signed transaction after signing. Returned only
            by GetSigningRequestDetails to full-access tokens. EVM: 0x-prefixed
            transaction hex; Bitcoin: wire-transaction hex without 0x; TRON:
            signed protobuf transaction hex without 0x; Aptos: 0x-prefixed BCS
            SignedTransaction hex; Solana: Base64 transaction bytes; Stellar:
            Base64 envelope XDR; TON: Base64 BoC; Sui: SignedTransaction JSON
            text. Absent for messages and management requests. Co-signed
            transactions may still require other parties before broadcast.
          readOnly: true
        customCategories:
          type: array
          items:
            type: string
          description: MPCVault request labels, including tags on dApp transactions.
          readOnly: true
        requiredApprovalCount:
          type: string
          description: >-
            Stored manager approval requirement before signing. Returned only by
            GetSigningRequestDetails as a decimal string.
          example: '2'
          format: uint64
          readOnly: true
        remainingApprovalCount:
          type: string
          description: >-
            max(requiredApprovalCount - count(approvedMembers), 0) while
            pending, otherwise 0. Returned only by GetSigningRequestDetails as a
            decimal string.
          example: '1'
          format: uint64
          readOnly: true
        approvedMembers:
          type: array
          items:
            $ref: '#/components/schemas/mpcvault.platform.v1.SigningApproval'
          description: >-
            Recorded approvals in stored order, each containing the approving
            user UUID and Unix-millisecond timestamp.
          readOnly: true
        pendingOperation:
          description: >-
            Current workflow action for the authenticated API user and actual
            ClientSigner binding. Returned only by GetSigningRequestDetails,
            GetSigningRequestList and GetPendingSigningRequests. Unset for
            terminal requests or when no action applies; evaluation failures
            return an error. Does not grant execution permission; execution
            revalidates permissions and policy.
          anyOf:
            - $ref: >-
                #/components/schemas/mpcvault.platform.v1.SigningRequestOperation
            - type: 'null'
          readOnly: true
      description: >-
        SigningRequest uses the same payload for API, MPCVault app and dApp
        requests across read endpoints. The selected type identifies the
        payload; field comments specify visibility and execution restrictions.
      required:
        - uuid
        - status
      additionalProperties: false
      allOf:
        - x-protobuf-oneof: type
          if:
            type: object
          then:
            oneOf:
              - required:
                  - aptosMessage
                properties:
                  aptosMessage:
                    not:
                      type: 'null'
              - required:
                  - aptosOpenToken
                properties:
                  aptosOpenToken:
                    not:
                      type: 'null'
              - required:
                  - aptosRegisterCoin
                properties:
                  aptosRegisterCoin:
                    not:
                      type: 'null'
              - required:
                  - aptosSendCoin
                properties:
                  aptosSendCoin:
                    not:
                      type: 'null'
              - required:
                  - aptosSendCustom
                properties:
                  aptosSendCustom:
                    not:
                      type: 'null'
              - required:
                  - aptosSendNative
                properties:
                  aptosSendNative:
                    not:
                      type: 'null'
              - required:
                  - aptosSignTransaction
                properties:
                  aptosSignTransaction:
                    not:
                      type: 'null'
              - required:
                  - batchPaymentApproval
                properties:
                  batchPaymentApproval:
                    not:
                      type: 'null'
              - required:
                  - batchPaymentSend
                properties:
                  batchPaymentSend:
                    not:
                      type: 'null'
              - required:
                  - btcSendNative
                properties:
                  btcSendNative:
                    not:
                      type: 'null'
              - required:
                  - createWallet
                properties:
                  createWallet:
                    not:
                      type: 'null'
              - required:
                  - dappRequest
                properties:
                  dappRequest:
                    not:
                      type: 'null'
              - required:
                  - evmMessage
                properties:
                  evmMessage:
                    not:
                      type: 'null'
              - required:
                  - evmSendCustom
                properties:
                  evmSendCustom:
                    not:
                      type: 'null'
              - required:
                  - evmSendErc20
                properties:
                  evmSendErc20:
                    not:
                      type: 'null'
              - required:
                  - evmSendNative
                properties:
                  evmSendNative:
                    not:
                      type: 'null'
              - required:
                  - fiatPayment
                properties:
                  fiatPayment:
                    not:
                      type: 'null'
              - required:
                  - keyAccessGrant
                properties:
                  keyAccessGrant:
                    not:
                      type: 'null'
              - required:
                  - rawMessage
                properties:
                  rawMessage:
                    not:
                      type: 'null'
              - required:
                  - rootKeyBackup
                properties:
                  rootKeyBackup:
                    not:
                      type: 'null'
              - required:
                  - rootKeyGeneration
                properties:
                  rootKeyGeneration:
                    not:
                      type: 'null'
              - required:
                  - solanaMessage
                properties:
                  solanaMessage:
                    not:
                      type: 'null'
              - required:
                  - solanaSendCustom
                properties:
                  solanaSendCustom:
                    not:
                      type: 'null'
              - required:
                  - solanaSendNative
                properties:
                  solanaSendNative:
                    not:
                      type: 'null'
              - required:
                  - solanaSendSplToken
                properties:
                  solanaSendSplToken:
                    not:
                      type: 'null'
              - required:
                  - sonicSvmSendCustom
                properties:
                  sonicSvmSendCustom:
                    not:
                      type: 'null'
              - required:
                  - sonicSvmSendNative
                properties:
                  sonicSvmSendNative:
                    not:
                      type: 'null'
              - required:
                  - sonicSvmSendSplToken
                properties:
                  sonicSvmSendSplToken:
                    not:
                      type: 'null'
              - required:
                  - stellarAuthEntry
                properties:
                  stellarAuthEntry:
                    not:
                      type: 'null'
              - required:
                  - stellarChallenge
                properties:
                  stellarChallenge:
                    not:
                      type: 'null'
              - required:
                  - stellarChangeTrust
                properties:
                  stellarChangeTrust:
                    not:
                      type: 'null'
              - required:
                  - stellarMessage
                properties:
                  stellarMessage:
                    not:
                      type: 'null'
              - required:
                  - stellarSendAsset
                properties:
                  stellarSendAsset:
                    not:
                      type: 'null'
              - required:
                  - stellarSendCustom
                properties:
                  stellarSendCustom:
                    not:
                      type: 'null'
              - required:
                  - stellarSendNative
                properties:
                  stellarSendNative:
                    not:
                      type: 'null'
              - required:
                  - suiMessage
                properties:
                  suiMessage:
                    not:
                      type: 'null'
              - required:
                  - suiSendCoin
                properties:
                  suiSendCoin:
                    not:
                      type: 'null'
              - required:
                  - suiSendCustom
                properties:
                  suiSendCustom:
                    not:
                      type: 'null'
              - required:
                  - suiSendNative
                properties:
                  suiSendNative:
                    not:
                      type: 'null'
              - required:
                  - swapApproval
                properties:
                  swapApproval:
                    not:
                      type: 'null'
              - required:
                  - swapSend
                properties:
                  swapSend:
                    not:
                      type: 'null'
              - required:
                  - tonMessage
                properties:
                  tonMessage:
                    not:
                      type: 'null'
              - required:
                  - tonSendCustom
                properties:
                  tonSendCustom:
                    not:
                      type: 'null'
              - required:
                  - tonSendNative
                properties:
                  tonSendNative:
                    not:
                      type: 'null'
              - required:
                  - tonSendToken
                properties:
                  tonSendToken:
                    not:
                      type: 'null'
              - required:
                  - tronSendNative
                properties:
                  tronSendNative:
                    not:
                      type: 'null'
              - required:
                  - tronSendTrc10
                properties:
                  tronSendTrc10:
                    not:
                      type: 'null'
              - required:
                  - tronSendTrc20
                properties:
                  tronSendTrc20:
                    not:
                      type: 'null'
              - required:
                  - vaultCreation
                properties:
                  vaultCreation:
                    not:
                      type: 'null'
              - required:
                  - vaultSettingUpdate
                properties:
                  vaultSettingUpdate:
                    not:
                      type: 'null'
              - not:
                  anyOf:
                    - required:
                        - aptosMessage
                      properties:
                        aptosMessage:
                          not:
                            type: 'null'
                    - required:
                        - aptosOpenToken
                      properties:
                        aptosOpenToken:
                          not:
                            type: 'null'
                    - required:
                        - aptosRegisterCoin
                      properties:
                        aptosRegisterCoin:
                          not:
                            type: 'null'
                    - required:
                        - aptosSendCoin
                      properties:
                        aptosSendCoin:
                          not:
                            type: 'null'
                    - required:
                        - aptosSendCustom
                      properties:
                        aptosSendCustom:
                          not:
                            type: 'null'
                    - required:
                        - aptosSendNative
                      properties:
                        aptosSendNative:
                          not:
                            type: 'null'
                    - required:
                        - aptosSignTransaction
                      properties:
                        aptosSignTransaction:
                          not:
                            type: 'null'
                    - required:
                        - batchPaymentApproval
                      properties:
                        batchPaymentApproval:
                          not:
                            type: 'null'
                    - required:
                        - batchPaymentSend
                      properties:
                        batchPaymentSend:
                          not:
                            type: 'null'
                    - required:
                        - btcSendNative
                      properties:
                        btcSendNative:
                          not:
                            type: 'null'
                    - required:
                        - createWallet
                      properties:
                        createWallet:
                          not:
                            type: 'null'
                    - required:
                        - dappRequest
                      properties:
                        dappRequest:
                          not:
                            type: 'null'
                    - required:
                        - evmMessage
                      properties:
                        evmMessage:
                          not:
                            type: 'null'
                    - required:
                        - evmSendCustom
                      properties:
                        evmSendCustom:
                          not:
                            type: 'null'
                    - required:
                        - evmSendErc20
                      properties:
                        evmSendErc20:
                          not:
                            type: 'null'
                    - required:
                        - evmSendNative
                      properties:
                        evmSendNative:
                          not:
                            type: 'null'
                    - required:
                        - fiatPayment
                      properties:
                        fiatPayment:
                          not:
                            type: 'null'
                    - required:
                        - keyAccessGrant
                      properties:
                        keyAccessGrant:
                          not:
                            type: 'null'
                    - required:
                        - rawMessage
                      properties:
                        rawMessage:
                          not:
                            type: 'null'
                    - required:
                        - rootKeyBackup
                      properties:
                        rootKeyBackup:
                          not:
                            type: 'null'
                    - required:
                        - rootKeyGeneration
                      properties:
                        rootKeyGeneration:
                          not:
                            type: 'null'
                    - required:
                        - solanaMessage
                      properties:
                        solanaMessage:
                          not:
                            type: 'null'
                    - required:
                        - solanaSendCustom
                      properties:
                        solanaSendCustom:
                          not:
                            type: 'null'
                    - required:
                        - solanaSendNative
                      properties:
                        solanaSendNative:
                          not:
                            type: 'null'
                    - required:
                        - solanaSendSplToken
                      properties:
                        solanaSendSplToken:
                          not:
                            type: 'null'
                    - required:
                        - sonicSvmSendCustom
                      properties:
                        sonicSvmSendCustom:
                          not:
                            type: 'null'
                    - required:
                        - sonicSvmSendNative
                      properties:
                        sonicSvmSendNative:
                          not:
                            type: 'null'
                    - required:
                        - sonicSvmSendSplToken
                      properties:
                        sonicSvmSendSplToken:
                          not:
                            type: 'null'
                    - required:
                        - stellarAuthEntry
                      properties:
                        stellarAuthEntry:
                          not:
                            type: 'null'
                    - required:
                        - stellarChallenge
                      properties:
                        stellarChallenge:
                          not:
                            type: 'null'
                    - required:
                        - stellarChangeTrust
                      properties:
                        stellarChangeTrust:
                          not:
                            type: 'null'
                    - required:
                        - stellarMessage
                      properties:
                        stellarMessage:
                          not:
                            type: 'null'
                    - required:
                        - stellarSendAsset
                      properties:
                        stellarSendAsset:
                          not:
                            type: 'null'
                    - required:
                        - stellarSendCustom
                      properties:
                        stellarSendCustom:
                          not:
                            type: 'null'
                    - required:
                        - stellarSendNative
                      properties:
                        stellarSendNative:
                          not:
                            type: 'null'
                    - required:
                        - suiMessage
                      properties:
                        suiMessage:
                          not:
                            type: 'null'
                    - required:
                        - suiSendCoin
                      properties:
                        suiSendCoin:
                          not:
                            type: 'null'
                    - required:
                        - suiSendCustom
                      properties:
                        suiSendCustom:
                          not:
                            type: 'null'
                    - required:
                        - suiSendNative
                      properties:
                        suiSendNative:
                          not:
                            type: 'null'
                    - required:
                        - swapApproval
                      properties:
                        swapApproval:
                          not:
                            type: 'null'
                    - required:
                        - swapSend
                      properties:
                        swapSend:
                          not:
                            type: 'null'
                    - required:
                        - tonMessage
                      properties:
                        tonMessage:
                          not:
                            type: 'null'
                    - required:
                        - tonSendCustom
                      properties:
                        tonSendCustom:
                          not:
                            type: 'null'
                    - required:
                        - tonSendNative
                      properties:
                        tonSendNative:
                          not:
                            type: 'null'
                    - required:
                        - tonSendToken
                      properties:
                        tonSendToken:
                          not:
                            type: 'null'
                    - required:
                        - tronSendNative
                      properties:
                        tronSendNative:
                          not:
                            type: 'null'
                    - required:
                        - tronSendTrc10
                      properties:
                        tronSendTrc10:
                          not:
                            type: 'null'
                    - required:
                        - tronSendTrc20
                      properties:
                        tronSendTrc20:
                          not:
                            type: 'null'
                    - required:
                        - vaultCreation
                      properties:
                        vaultCreation:
                          not:
                            type: 'null'
                    - required:
                        - vaultSettingUpdate
                      properties:
                        vaultSettingUpdate:
                          not:
                            type: 'null'
      x-protobuf-oneofs:
        type:
          - aptosMessage
          - aptosOpenToken
          - aptosRegisterCoin
          - aptosSendCoin
          - aptosSendCustom
          - aptosSendNative
          - aptosSignTransaction
          - batchPaymentApproval
          - batchPaymentSend
          - btcSendNative
          - createWallet
          - dappRequest
          - evmMessage
          - evmSendCustom
          - evmSendErc20
          - evmSendNative
          - fiatPayment
          - keyAccessGrant
          - rawMessage
          - rootKeyBackup
          - rootKeyGeneration
          - solanaMessage
          - solanaSendCustom
          - solanaSendNative
          - solanaSendSplToken
          - sonicSvmSendCustom
          - sonicSvmSendNative
          - sonicSvmSendSplToken
          - stellarAuthEntry
          - stellarChallenge
          - stellarChangeTrust
          - stellarMessage
          - stellarSendAsset
          - stellarSendCustom
          - stellarSendNative
          - suiMessage
          - suiSendCoin
          - suiSendCustom
          - suiSendNative
          - swapApproval
          - swapSend
          - tonMessage
          - tonSendCustom
          - tonSendNative
          - tonSendToken
          - tronSendNative
          - tronSendTrc10
          - tronSendTrc20
          - vaultCreation
          - vaultSettingUpdate
    mpcvault.platform.v1.Error:
      type: object
      properties:
        message:
          type: string
        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
            - SERVICE_ERROR_CODE_ORG_PENDING_SIGNING_REQUEST_LIMIT_EXCEEDED
          type: string
          format: enum
        executeSigningRequestsErrorCode:
          enum:
            - EXECUTE_SIGNING_REQUESTS_ERROR_CODE_UNSPECIFIED
            - EXECUTE_SIGNING_REQUESTS_ERROR_CODE_INSUFFICIENT_FUNDS
            - EXECUTE_SIGNING_REQUESTS_ERROR_CODE_ALREADY_DENIED
            - EXECUTE_SIGNING_REQUESTS_ERROR_CODE_INSUFFICIENT_GAS_FEE
            - EXECUTE_SIGNING_REQUESTS_ERROR_CODE_ADDRESS_NOT_IN_WHITELIST
            - EXECUTE_SIGNING_REQUESTS_ERROR_CODE_POLICY_APPROVAL_PENDING
            - EXECUTE_SIGNING_REQUESTS_ERROR_CODE_POLICY_BLOCKED
            - EXECUTE_SIGNING_REQUESTS_ERROR_CODE_POLICY_CONFIGURATION_ERROR
          type: string
          format: enum
      additionalProperties: false
      allOf:
        - x-protobuf-oneof: ErrorCode
          if:
            type: object
          then:
            oneOf:
              - required:
                  - executeSigningRequestsErrorCode
                properties:
                  executeSigningRequestsErrorCode:
                    not:
                      type: 'null'
              - required:
                  - serviceErrorCode
                properties:
                  serviceErrorCode:
                    not:
                      type: 'null'
              - not:
                  anyOf:
                    - required:
                        - executeSigningRequestsErrorCode
                      properties:
                        executeSigningRequestsErrorCode:
                          not:
                            type: 'null'
                    - required:
                        - serviceErrorCode
                      properties:
                        serviceErrorCode:
                          not:
                            type: 'null'
      x-protobuf-oneofs:
        ErrorCode:
          - executeSigningRequestsErrorCode
          - serviceErrorCode
      description: Exactly one of the two error code fields is set.
    mpcvault.platform.v1.EVMSendNative:
      type: object
      properties:
        chainId:
          type: string
          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'
          format: uint64
        from:
          type: string
          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).
          example: <string>
        to:
          type: string
          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).
          example: <string>
        value:
          type: string
          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.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMGas'
            - type: 'null'
        nonce:
          type:
            - integer
            - string
            - 'null'
          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.
          example: '1'
          format: int64
      additionalProperties: false
      required:
        - chainId
        - from
        - to
        - value
    mpcvault.platform.v1.EVMSendERC20:
      type: object
      properties:
        chainId:
          type: string
          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'
          format: uint64
        from:
          type: string
          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).
          example: <string>
        to:
          type: string
          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).
          example: <string>
        tokenContractAddress:
          type: string
          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.
          example: <string>
        amount:
          type: string
          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.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMGas'
            - type: 'null'
        nonce:
          type:
            - integer
            - string
            - 'null'
          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.
          example: '1'
          format: int64
      additionalProperties: false
      required:
        - chainId
        - from
        - to
        - tokenContractAddress
        - amount
    mpcvault.platform.v1.EVMSendCustom:
      type: object
      properties:
        chainId:
          type: string
          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'
          format: uint64
        from:
          type: string
          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.
          example: <string>
        to:
          type: string
          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.
          example: <string>
        value:
          type: string
          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
          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.
          format: byte
          example: <string>
        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.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMGas'
            - type: 'null'
        nonce:
          type:
            - integer
            - string
            - 'null'
          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.
          example: '1'
          format: int64
      additionalProperties: false
      required:
        - chainId
        - from
        - value
    mpcvault.platform.v1.BTCSendNative:
      type: object
      properties:
        from:
          type: string
          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).
          example: <string>
        to:
          type: string
          description: >-
            Recipient address. Bitcoin mainnet address (base58check `1...` or
            `3...`, or bech32 `bc1...`), returned exactly as supplied when the
            request was created (not normalized).
          example: <string>
        amount:
          type: string
          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: string
          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'
          format: uint64
      additionalProperties: false
      required:
        - from
        - to
        - amount
    mpcvault.platform.v1.TronSendNative:
      type: object
      properties:
        from:
          type: string
          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).
          example: <string>
        to:
          type: string
          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: <string>
        value:
          type: string
          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
      properties:
        from:
          type: string
          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).
          example: <string>
        to:
          type: string
          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: <string>
        assetName:
          type: string
          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
          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
      properties:
        from:
          type: string
          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).
          example: <string>
        to:
          type: string
          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: <string>
        contractAddress:
          type: string
          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
          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:
          type:
            - string
            - 'null'
          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).
          pattern: ^[0-9]+$
      additionalProperties: false
      required:
        - from
        - to
        - contractAddress
        - amount
    mpcvault.platform.v1.AptosSendNative:
      type: object
      properties:
        chainId:
          type: string
          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'
          format: uint64
        from:
          type: string
          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).
          example: <string>
        to:
          type: string
          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).
          example: <string>
        value:
          type: string
          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.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosGas'
            - type: 'null'
      additionalProperties: false
      required:
        - chainId
        - from
        - to
        - value
    mpcvault.platform.v1.AptosSendCoin:
      type: object
      properties:
        chainId:
          type: string
          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'
          format: uint64
        from:
          type: string
          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).
          example: <string>
        to:
          type: string
          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).
          example: <string>
        coinTag:
          type: string
          description: >-
            Coin identifier: a Fungible Asset metadata address (for example,
            native USDC) or a legacy Move coin type `ADDRESS::module::Struct`,
            returned as supplied. Native APT uses `aptosSendNative`. The
            identifier must resolve to token metadata. Movement legacy coin
            transfers require the recipient to have registered the coin.
          example: <USDC_FA_METADATA_ADDRESS>
        amount:
          type: string
          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.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosGas'
            - type: 'null'
      additionalProperties: false
      required:
        - chainId
        - from
        - to
        - coinTag
        - amount
    mpcvault.platform.v1.AptosSendCustom:
      type: object
      properties:
        chainId:
          type: string
          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'
          format: uint64
        from:
          type: string
          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).
          example: <string>
        payload:
          type: string
          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.
          format: byte
        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.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosGas'
            - type: 'null'
      additionalProperties: false
      required:
        - chainId
        - from
        - payload
    mpcvault.platform.v1.SuiSendNative:
      type: object
      properties:
        from:
          type: string
          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).
          example: <string>
        to:
          type: string
          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).
          example: <string>
        value:
          type: string
          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.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SuiGas'
            - type: 'null'
      additionalProperties: false
      required:
        - from
        - to
        - value
    mpcvault.platform.v1.SuiSendCoin:
      type: object
      properties:
        from:
          type: string
          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).
          example: <string>
        to:
          type: string
          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).
          example: <string>
        coinTag:
          type: string
          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
          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.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SuiGas'
            - type: 'null'
      required:
        - from
        - to
        - coinTag
        - amount
      additionalProperties: false
    mpcvault.platform.v1.SuiSendCustom:
      type: object
      properties:
        from:
          type: string
          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).
          example: <string>
        payload:
          type: string
          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.
          format: byte
      required:
        - from
        - payload
      additionalProperties: false
    mpcvault.platform.v1.SolanaSendNative:
      type: object
      properties:
        from:
          type: string
          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).
          example: <string>
        to:
          type: string
          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`).
          example: <string>
        value:
          type: string
          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: string
          description: >-
            Legacy field, not a native Solana network ID. Creation selects the
            network by the solana_* or sonic_svm_* payload member and ignores
            this value. Reads may return 0 for either network, so it cannot
            identify Sonic SVM. Returned as a decimal string. Testnets are
            unsupported.
          example: '101'
          format: uint64
        jito:
          description: >-
            Output-only additional payment plan, separate from value. See
            SolanaJito for signing requirements. Rejected by
            CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaJito'
            - type: 'null'
          readOnly: true
      required:
        - from
        - to
        - value
      additionalProperties: false
    mpcvault.platform.v1.SolanaSendSPLToken:
      type: object
      properties:
        from:
          type: string
          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).
          example: <string>
        to:
          type: string
          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.
          example: <string>
        mintAddress:
          type: string
          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: <string>
        amount:
          type: string
          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: string
          description: >-
            Legacy field, not a native Solana network ID. Creation selects the
            network by the solana_* or sonic_svm_* payload member and ignores
            this value. Reads may return 0 for either network, so it cannot
            identify Sonic SVM. Returned as a decimal string. Testnets are
            unsupported.
          example: '101'
          format: uint64
        decimals:
          type:
            - integer
            - string
            - 'null'
          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`.
          example: '6'
          format: int64
        jito:
          description: >-
            Output-only native-asset payment plan, separate from the SPL-token
            amount. See SolanaJito for signing requirements. Rejected by
            CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaJito'
            - type: 'null'
          readOnly: true
      required:
        - from
        - to
        - mintAddress
        - amount
      additionalProperties: false
    mpcvault.platform.v1.CreateWalletRequest:
      type: object
      properties:
        vaultUuid:
          type: string
          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
          example: <string>
        callbackClientSignerPublicKey:
          type: string
          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: <string>
        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
          type: string
          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.
          format: enum
        ref:
          type: string
          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: customer-wallet-001
          maxLength: 500
        name:
          type: string
          description: Name of the wallet. UTF-8, at most 85 Unicode code points.
          example: test wallet
          maxLength: 85
      required:
        - vaultUuid
        - networkType
        - callbackClientSignerPublicKey
      additionalProperties: false
    mpcvault.platform.v1.EVMMessage:
      type: object
      properties:
        chainId:
          type: string
          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'
          format: uint64
        from:
          type: string
          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.
          example: <string>
        type:
          enum:
            - TYPE_UNSPECIFIED
            - TYPE_PERSONAL_SIGN
            - TYPE_SIGN_TYPED_DATA
            - TYPE_ETH_SIGN
          type: string
          description: >-
            Kind of EVM message: TYPE_PERSONAL_SIGN (personal_sign, EIP-191),
            TYPE_SIGN_TYPED_DATA (EIP-712), or output-only TYPE_ETH_SIGN
            (eth_sign). CreateSigningRequest rejects TYPE_UNSPECIFIED and
            TYPE_ETH_SIGN.
          format: enum
        content:
          type: string
          description: >-
            Message bytes; standard padded Base64 in REST JSON.
            TYPE_PERSONAL_SIGN and TYPE_ETH_SIGN carry the hex-decoded raw
            message bytes; TYPE_ETH_SIGN has no personal_sign prefix.
            TYPE_SIGN_TYPED_DATA carries UTF-8 EIP-712 typed-data text. Required
            on create; typed-data text must parse as EIP-712 JSON.
          format: byte
          example: <string>
      required:
        - type
        - chainId
        - from
        - content
      additionalProperties: false
    mpcvault.platform.v1.AptosMessage:
      type: object
      properties:
        from:
          type: string
          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).
          example: <string>
        type:
          enum:
            - TYPE_UNSPECIFIED
            - TYPE_DEFAULT
          type: string
          description: Kind of message. Enum name; always `TYPE_DEFAULT` in responses.
          format: enum
        content:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosMessage.Message'
            - type: 'null'
          description: >-
            Message to sign, with its `message` text and `nonce` and the
            optional `address`, `application` and `chainId` it carries. Required
            on create.
        network:
          description: >-
            Output-only request context using NetworkInfo.aptos, including
            Movement or Sonic SVM where applicable. Omitted when the historical
            network is uncertain. It does not alter signed content or provide
            replay protection. CreateSigningRequest rejects this field.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.NetworkInfo'
            - type: 'null'
          readOnly: true
      required:
        - type
        - from
        - content
      additionalProperties: false
    mpcvault.platform.v1.SolanaMessage:
      type: object
      properties:
        from:
          type: string
          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.
          example: <string>
        type:
          enum:
            - TYPE_UNSPECIFIED
            - TYPE_DEFAULT
          type: string
          description: Kind of message. Enum name; always `TYPE_DEFAULT` in responses.
          format: enum
        content:
          type: string
          description: >-
            Message to sign. Bytes, base64 (standard, padded) in JSON, returned
            exactly as submitted; must be printable ASCII or valid UTF-8.
          format: byte
          example: <string>
        network:
          description: >-
            Output-only request context using NetworkInfo.solana, including
            Movement or Sonic SVM where applicable. Omitted when the historical
            network is uncertain. It does not alter signed content or provide
            replay protection. CreateSigningRequest rejects this field.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.NetworkInfo'
            - type: 'null'
          readOnly: true
      required:
        - type
        - from
        - content
      additionalProperties: false
    mpcvault.platform.v1.RawMessage:
      type: object
      properties:
        from:
          type: string
          description: >-
            Address of the vault wallet whose key signs the message, returned
            exactly as supplied; no address normalization is applied on any
            network.
          example: <string>
        content:
          type: string
          description: >-
            Signing bytes for a transaction or off-chain message. Bytes,
            standard padded base64 in JSON. Non-empty; returned exactly as
            submitted.
          format: byte
          example: <string>
        ecdsaHashFunction:
          enum:
            - ECDSA_HASH_FUNCTION_UNSPECIFIED
            - ECDSA_HASH_FUNCTION_USE_MESSAGE_DIRECTLY
            - ECDSA_HASH_FUNCTION_SHA256
          type: string
          description: >-
            For secp256k1 wallets, required: `ECDSA_HASH_FUNCTION_SHA256` hashes
            the decoded content once with SHA-256;
            `ECDSA_HASH_FUNCTION_USE_MESSAGE_DIRECTLY` signs exactly 32 decoded
            bytes without additional hashing. For Ed25519 wallets, omit it or
            use `ECDSA_HASH_FUNCTION_UNSPECIFIED`; other values are rejected.
          format: enum
      additionalProperties: false
      required:
        - from
        - content
    mpcvault.platform.v1.SuiMessage:
      type: object
      properties:
        from:
          type: string
          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).
          example: <string>
        type:
          enum:
            - TYPE_UNSPECIFIED
            - TYPE_DEFAULT
          type: string
          description: Kind of message. Enum name; always `TYPE_DEFAULT` in responses.
          format: enum
        content:
          type: string
          description: >-
            Message to sign, as UTF-8 text. Bytes, base64 (standard, padded) in
            JSON.
          format: byte
          example: <string>
      required:
        - type
        - from
        - content
      additionalProperties: false
    mpcvault.platform.v1.TonSendNative:
      type: object
      properties:
        from:
          type: string
          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.
          example: <string>
        to:
          type: string
          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.
          example: <string>
        value:
          type: string
          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
          description: >-
            Text comment attached to the transfer. UTF-8, at most 50 Unicode
            code points, returned unchanged; empty string when none.
          example: ton send native
          maxLength: 50
      required:
        - from
        - to
        - value
      additionalProperties: false
    mpcvault.platform.v1.TonSendToken:
      type: object
      properties:
        from:
          type: string
          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.
          example: <string>
        to:
          type: string
          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.
          example: <string>
        mintAddress:
          type: string
          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
          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
          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:
          type:
            - integer
            - string
            - 'null'
          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.
          example: '6'
          format: int64
      required:
        - from
        - to
        - mintAddress
        - amount
      additionalProperties: false
    mpcvault.platform.v1.TonSendCustom:
      type: object
      properties:
        from:
          type: string
          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.
          example: <string>
        payload:
          type: string
          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.
          format: byte
          example: >-
            ewogICJtZXNzYWdlcyI6IFsKICAgIHsKICAgICAgImFkZHJlc3MiOiAiIiwKICAgICAgImFtb3VudCI6ICIwIiwKICAgICAgInBheWxvYWQiOiAiIgogICAgfQogIF0sCiAgInZhbGlkX3VudGlsIjogMCwKICAiZnJvbSI6ICIiLAogICJuZXR3b3JrIjogIi0yMzkiCn0=
      required:
        - from
        - payload
      additionalProperties: false
    mpcvault.platform.v1.TonMessage:
      type: object
      properties:
        from:
          type: string
          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.
          example: <string>
        type:
          enum:
            - TYPE_UNSPECIFIED
            - TYPE_DEFAULT
          type: string
          description: Kind of message. Enum name; always `TYPE_DEFAULT` in responses.
          format: enum
        content:
          type: string
          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.
          format: byte
          example: <string>
      required:
        - type
        - from
        - content
      additionalProperties: false
    mpcvault.platform.v1.SolanaSendCustom:
      type: object
      properties:
        from:
          type: string
          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).
          example: <string>
        txBase64:
          type: array
          items:
            type: string
          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).
          example:
            - <string>
          minItems: 1
          maxItems: 5
        chainId:
          type: string
          description: >-
            Legacy field, not a native Solana network ID. Creation selects the
            network by the solana_* or sonic_svm_* payload member and ignores
            this value. Reads may return 0 for either network, so it cannot
            identify Sonic SVM. Returned as a decimal string. Testnets are
            unsupported.
          example: '101'
          format: uint64
        jito:
          description: >-
            Output-only payment plan appended separately from tx_base64
            transactions. See SolanaJito for signing requirements. Rejected by
            CreateSigningRequest.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaJito'
            - type: 'null'
          readOnly: true
      required:
        - from
        - txBase64
      additionalProperties: false
    mpcvault.platform.v1.StellarSendNative:
      type: object
      properties:
        from:
          type: string
          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
          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
          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
          description: >-
            Transaction memo. Optional; an empty string means no memo,
            regardless of memoType. Text (the default): UTF-8, at most 28 bytes,
            kept as entered. ID: decimal string from 0 to 18446744073709551615.
            Hash and Return Hash: exactly 64 hexadecimal characters (32 bytes),
            without a 0x prefix.
          example: stellar send native
        memoType:
          enum:
            - STELLAR_MEMO_TYPE_UNSPECIFIED
            - STELLAR_MEMO_TYPE_TEXT
            - STELLAR_MEMO_TYPE_ID
            - STELLAR_MEMO_TYPE_HASH
            - STELLAR_MEMO_TYPE_RETURN
          type: string
          description: >-
            Memo format. Omit or use STELLAR_MEMO_TYPE_UNSPECIFIED to use Text.
            Select STELLAR_MEMO_TYPE_TEXT, STELLAR_MEMO_TYPE_ID,
            STELLAR_MEMO_TYPE_HASH or STELLAR_MEMO_TYPE_RETURN. An empty memo
            always means no memo.
          format: enum
      required:
        - from
        - to
        - value
      additionalProperties: false
    mpcvault.platform.v1.StellarSendAsset:
      type: object
      properties:
        from:
          type: string
          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
          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
          description: Code of the asset to send. 1 to 12 alphanumeric characters.
          example: USDC
        assetIssuer:
          type: string
          description: Issuer account of the asset. Stellar `G...` strkey (56 characters).
          example: GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN
        amount:
          type: string
          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
          description: >-
            Transaction memo. Optional; an empty string means no memo,
            regardless of memoType. Text (the default): UTF-8, at most 28 bytes,
            kept as entered. ID: decimal string from 0 to 18446744073709551615.
            Hash and Return Hash: exactly 64 hexadecimal characters (32 bytes),
            without a 0x prefix.
          example: stellar send asset
        memoType:
          enum:
            - STELLAR_MEMO_TYPE_UNSPECIFIED
            - STELLAR_MEMO_TYPE_TEXT
            - STELLAR_MEMO_TYPE_ID
            - STELLAR_MEMO_TYPE_HASH
            - STELLAR_MEMO_TYPE_RETURN
          type: string
          description: >-
            Memo format. Omit or use STELLAR_MEMO_TYPE_UNSPECIFIED to use Text.
            Select STELLAR_MEMO_TYPE_TEXT, STELLAR_MEMO_TYPE_ID,
            STELLAR_MEMO_TYPE_HASH or STELLAR_MEMO_TYPE_RETURN. An empty memo
            always means no memo.
          format: enum
      required:
        - from
        - to
        - assetCode
        - assetIssuer
        - amount
      additionalProperties: false
    mpcvault.platform.v1.StellarSendCustom:
      type: object
      properties:
        from:
          type: string
          description: >-
            Wallet account in the vault that signs the transaction, identified
            by a `G...` Stellar account ID (56 characters). For dApp
            transactions, this can differ from the transaction envelope's source
            account. Returned exactly as supplied.
          example: GAAACAQDAQCQMBYIBEFAWDANBYHRAEISCMKBKFQXDAMRUGY4DUPB7JZX
        txBase64:
          type: string
          description: >-
            Transaction to sign, supporting both Classic operations and Soroban
            smart contract interactions. Supply the XDR `TransactionEnvelope` as
            standard padded base64. Fee-bump envelopes are also accepted.
            Returned exactly as submitted.
          example: <string>
      description: >-
        StellarSendCustom signs an existing transaction envelope or the wallet's
        matching Soroban authorizations.
      required:
        - from
        - txBase64
      additionalProperties: false
    mpcvault.platform.v1.StellarChangeTrust:
      type: object
      properties:
        from:
          type: string
          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
          description: Code of the asset to trust. 1 to 12 alphanumeric characters.
          example: USDC
        assetIssuer:
          type: string
          description: Issuer account of the asset. Stellar `G...` strkey (56 characters).
          example: GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN
        memo:
          type: string
          description: >-
            Transaction memo. Optional; an empty string means no memo,
            regardless of memoType. Text (the default): UTF-8, at most 28 bytes,
            kept as entered. ID: decimal string from 0 to 18446744073709551615.
            Hash and Return Hash: exactly 64 hexadecimal characters (32 bytes),
            without a 0x prefix.
          example: stellar change trust
        memoType:
          enum:
            - STELLAR_MEMO_TYPE_UNSPECIFIED
            - STELLAR_MEMO_TYPE_TEXT
            - STELLAR_MEMO_TYPE_ID
            - STELLAR_MEMO_TYPE_HASH
            - STELLAR_MEMO_TYPE_RETURN
          type: string
          description: >-
            Memo format. Omit or use STELLAR_MEMO_TYPE_UNSPECIFIED to use Text.
            Select STELLAR_MEMO_TYPE_TEXT, STELLAR_MEMO_TYPE_ID,
            STELLAR_MEMO_TYPE_HASH or STELLAR_MEMO_TYPE_RETURN. An empty memo
            always means no memo.
          format: enum
      required:
        - from
        - assetCode
        - assetIssuer
      additionalProperties: false
    mpcvault.platform.v1.SwapApproval:
      type: object
      properties:
        approval:
          description: >-
            Chain-specific spending authorization transaction for a fungible
            asset.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.FungibleAssetApproval'
            - type: 'null'
        swapQuote:
          description: >-
            Quote stored with the approval. It is not part of the allowance
            transaction. If the stored JSON cannot be parsed, this is left unset
            and the read still succeeds.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SwapQuote'
            - type: 'null'
      description: >-
        SwapApproval is a spending authorization for a fungible asset requested
        before a swap, with its quote context.
      additionalProperties: false
    mpcvault.platform.v1.SwapSend:
      type: object
      properties:
        transaction:
          description: >-
            Chain body. The member that is set uses the same message as a plain
            send of that chain.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.ChainTransaction'
            - type: 'null'
        swapQuote:
          description: >-
            Quote stored with the swap. It is not part of the chain transaction.
            If the stored JSON cannot be parsed, this is left unset and the read
            still succeeds.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SwapQuote'
            - type: 'null'
      description: SwapSend is the swap transaction itself.
      additionalProperties: false
    mpcvault.platform.v1.BatchPaymentApproval:
      type: object
      properties:
        approval:
          description: >-
            Chain-specific spending authorization transaction. Its selected body
            carries the allowance, spender, fee settings and nonce when
            available.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.FungibleAssetApproval'
            - type: 'null'
        batchContext:
          description: >-
            Batch_context describes the planned batch payment. Its recipients
            and amounts are context and are not transfers performed by the
            authorization transaction.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.BatchPaymentBody'
            - type: 'null'
      description: >-
        BatchPaymentApproval is a spending authorization for a fungible asset
        that precedes a batch payment, with the planned payment as separate
        context.
      additionalProperties: false
    mpcvault.platform.v1.BatchPaymentSend:
      type: object
      properties:
        transaction:
          description: Chain body of the batch. gas_limit and nonce are not inside it.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.BatchPaymentBody'
            - type: 'null'
        gasLimit:
          type:
            - string
            - 'null'
          description: >-
            Gas limit stored on the batch transaction. Same type and quantity as
            EVMGas.gas_limit. Omitted when the batch transaction has none.
          example: '21000'
        nonce:
          type:
            - integer
            - string
            - 'null'
          description: >-
            Nonce stored on the batch transaction. Same type as
            EVMSendNative.nonce. Empty or non-numeric stored nonces are omitted.
          example: '1'
          format: int64
      description: BatchPaymentSend is the batch payment transaction.
      additionalProperties: false
    mpcvault.platform.v1.FiatPayment:
      type: object
      properties:
        transaction:
          description: Chain transfer that pays the order.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.ChainTransaction'
            - type: 'null'
        sourceCurrency:
          type: string
          description: Source currency code stored on the fiat order.
          example: USDC
        sourceAmount:
          type: string
          description: >-
            Gross decimal funding amount in whole source_currency units; "10"
            with "USDC" means 10 USDC. The nested transaction instead uses
            smallest units, such as "10000000". Empty means unavailable.
          example: '10'
        targetCurrency:
          type: string
          description: Target currency code stored on the fiat order.
          example: USD
        targetAmount:
          type: string
          description: >-
            Decimal amount in whole target_currency units; "10" with "USD" means
            10 US dollars. Empty means unavailable.
          example: '10'
        beneficiary:
          description: >-
            Recipient display summary; sensitive data is omitted for all tokens
            and callbacks. Missing or unparseable stored data leaves this unset
            without failing the read.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.FiatBeneficiary'
            - type: 'null'
      description: FiatPayment is a token transfer that pays a fiat order.
      additionalProperties: false
    mpcvault.platform.v1.AptosRegisterCoin:
      type: object
      properties:
        chainId:
          type: string
          description: >-
            Chain_id follows the existing Aptos convention. Use 1 for Aptos
            Mainnet and 126 for Movement Mainnet.
          example: '1'
          format: uint64
        from:
          type: string
          description: >-
            Account that registered the coin. Get returns the address stored on
            the request.
          example: <string>
        coinTag:
          type: string
          description: Coin type being registered.
        gasFee:
          description: Gas_fee uses the same fields as AptosGas.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosGas'
            - type: 'null'
      description: >-
        AptosRegisterCoin registers a coin on an Aptos account so that it can
        receive it.
      additionalProperties: false
    mpcvault.platform.v1.AptosOpenToken:
      type: object
      properties:
        chainId:
          type: string
          description: >-
            Chain_id follows the existing Aptos convention. Use 1 for Aptos
            Mainnet and 126 for Movement Mainnet.
          example: '1'
          format: uint64
        from:
          type: string
          description: >-
            Account that opened direct NFT transfer. Get returns the address
            stored on the request.
          example: <string>
        gasFee:
          description: Gas_fee uses the same fields as AptosGas.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosGas'
            - type: 'null'
      description: AptosOpenToken lets an Aptos account receive NFTs sent to it directly.
      additionalProperties: false
    mpcvault.platform.v1.VaultCreation:
      type: object
      properties:
        name:
          type: string
          description: Name of the vault being created.
          example: Treasury
        keyPath:
          type: string
          description: Derivation path stored for the vault.
          example: '[]'
      description: VaultCreation is the approval of a new vault.
      additionalProperties: false
    mpcvault.platform.v1.VaultSettingUpdate:
      type: object
      properties: {}
      description: >-
        VaultSettingUpdate is an empty marker for a setting change in
        SigningRequest.vault_uuid's vault. Setting details are not exposed.
      additionalProperties: false
    mpcvault.platform.v1.RootKeyGeneration:
      type: object
      properties:
        keyType:
          enum:
            - KEY_TYPE_UNSPECIFIED
            - KEY_TYPE_ECC_SECP256K1
            - KEY_TYPE_ECC_ED25519
          type: string
          description: KEY_TYPE_ECC_SECP256K1 or KEY_TYPE_ECC_ED25519.
          format: enum
          example: KEY_TYPE_ECC_SECP256K1
        keyPath:
          type: string
          description: Derivation path. An empty stored path is returned as [].
          example: '[]'
      description: RootKeyGeneration is the generation of an MPC root key (ECDSA or EdDSA).
      additionalProperties: false
    mpcvault.platform.v1.RootKeyBackup:
      type: object
      properties:
        encryptionPublicKeys:
          type: array
          items:
            type: string
          description: >-
            Three backup-share encryption recipient keys, not wallet root keys.
            Each is "ssh-ed25519 <Base64 key>" in SSH authorized-key format,
            without a trailing comment.
      description: >-
        RootKeyBackup describes a backup of the organization's root keys. Only
        its public encryption metadata is returned; backup ciphertext is never
        returned by this API.
      additionalProperties: false
    mpcvault.platform.v1.KeyAccessGrant:
      type: object
      properties:
        userUuid:
          type: string
          description: Member or client signer receiving the key.
          format: uuid
          example: <string>
        keyPath:
          type: string
          description: >-
            Derivation path. An empty stored path is returned as [] when a key
            type is set.
          example: '[]'
        keyTypes:
          type: array
          items:
            enum:
              - KEY_TYPE_UNSPECIFIED
              - KEY_TYPE_ECC_SECP256K1
              - KEY_TYPE_ECC_ED25519
            type: string
            format: enum
          description: KEY_TYPE_ECC_SECP256K1, KEY_TYPE_ECC_ED25519, or both.
          example:
            - KEY_TYPE_ECC_SECP256K1
      description: >-
        KeyAccessGrant grants a member or an API client signer access to a key.
        SigningRequest.vault_uuid identifies the vault scope; an unset
        vault_uuid means an organization-level grant.
      additionalProperties: false
    mpcvault.platform.v1.StellarMessage:
      type: object
      properties:
        from:
          type: string
          description: Account that signs the message.
          example: <string>
        content:
          type: string
          description: >-
            Raw bytes of the stored message string, not hex-decoded. Standard
            padded Base64 transport in REST JSON.
          format: byte
          example: aGVsbG8=
      additionalProperties: false
    mpcvault.platform.v1.StellarAuthEntry:
      type: object
      properties:
        from:
          type: string
          description: Account that signs the authorization entry.
          example: <string>
        content:
          type: string
          description: >-
            Stored authorization text bytes, without decoding or normalization.
            Current plugin requests store Base64 Soroban HashIdPreimage XDR, not
            SorobanAuthorizationEntry bytes. Standard padded Base64 transport in
            REST JSON adds another layer: decode it to recover the stored text,
            then decode the inner Base64 when applicable. Historical text can
            use another format.
          format: byte
          example: QVFBLQ==
      additionalProperties: false
    mpcvault.platform.v1.StellarChallenge:
      type: object
      properties:
        from:
          type: string
          description: Account that signs the SEP-10 challenge.
          example: <string>
        txBase64:
          type: string
          description: Base64-encoded SEP-10 challenge transaction.
          example: <string>
      additionalProperties: false
    mpcvault.platform.v1.AptosSignTransaction:
      type: object
      properties:
        chainId:
          type: string
          description: >-
            Chain_id follows the existing Aptos convention. Use 1 for Aptos
            Mainnet and 126 for Movement Mainnet.
          example: '1'
          format: uint64
        from:
          type: string
          description: Account co-signing the transaction.
          example: <string>
        transaction:
          type: string
          description: >-
            Original transaction before any asFeePayer override. Stored
            0x-prefixed hex is decoded to bytes; other stored text is returned
            as raw bytes. Standard padded Base64 transport in REST JSON.
            Applying from as fee payer during signing does not rewrite this
            field.
          format: byte
          example: AQID
        gasFee:
          description: Gas_fee uses the same fields as AptosGas.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosGas'
            - type: 'null'
        asFeePayer:
          type: boolean
          description: >-
            When true, applies from as fee payer during signing and authorizes
            this wallet to pay gas. When false, retains the original fee-payer
            address.
          example: true
      description: >-
        AptosSignTransaction co-signs a whole transaction, unlike
        AptosSendCustom's transaction payload.
      additionalProperties: false
    mpcvault.platform.v1.DAppRequest:
      type: object
      properties:
        requestType:
          type: string
          description: Stored dApp request type.
          example: SIGN_TRANSACTION
        from:
          type: string
          description: Stored from address.
          example: <string>
        to:
          type: string
          description: Stored to address.
          example: <string>
        amount:
          type: string
          description: >-
            Stored amount text, when present. Its unit and meaning depend on the
            request type and network.
          example: '1'
        data:
          type: string
          description: Stored call data or message text in the original request format.
        network:
          description: >-
            Network identifies the blockchain network of the original dApp
            transaction or message using its protocol and native network
            identifier.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.NetworkInfo'
            - type: 'null'
      description: >-
        DAppRequest preserves a dApp transaction or message without a
        chain-specific payload. The claimed website is on
        SigningRequest.source.website.
      additionalProperties: false
    mpcvault.platform.v1.EVMInputDataDecode:
      type: object
      properties:
        function:
          type: string
          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
          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.
          example:
            - name: arg1_name
              type: arg1_type
              data: arg1_value
            - name: arg2_name
              type: arg2_type
              data: arg2_value
      required:
        - function
        - args
      additionalProperties: false
    mpcvault.platform.v1.SignatureContainer:
      type: object
      properties:
        signatures:
          type: array
          items:
            $ref: >-
              #/components/schemas/mpcvault.platform.v1.SignatureContainer.SignResponse
          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`.
      description: >-
        SignatureContainer contains complete signatures of messages or digests
        in signing order, not MPC shares. A Bitcoin transaction may have one
        result per input digest.
      additionalProperties: false
    mpcvault.platform.v1.RequestSource:
      type: object
      properties:
        type:
          enum:
            - TYPE_UNSPECIFIED
            - TYPE_WALLET_CONNECT
            - TYPE_PLUGIN
            - TYPE_MMI
          type: string
          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.
          format: enum
        website:
          type:
            - string
            - 'null'
          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.
          example: app.uniswap.org
      description: >-
        RequestSource describes an inbound dApp's intake channel, not
        authenticated dApp or user identity.
      additionalProperties: false
    mpcvault.platform.v1.SigningApproval:
      type: object
      properties:
        userUuid:
          type: string
          description: User who approved.
          format: uuid
          example: <string>
        timestamp:
          type: string
          description: When the approval was recorded, in Unix milliseconds.
          example: '1744274467154'
          format: uint64
      description: SigningApproval is one recorded approval on a signing request.
      additionalProperties: false
    mpcvault.platform.v1.SigningRequestOperation:
      type: object
      properties:
        approve:
          description: >-
            The authenticated API user can contribute an approval still needed
            by the current policy. This operation does not sign.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.ApproveOperation'
            - type: 'null'
        sign:
          description: >-
            Prerequisite approvals are satisfied for eligible ClientSigner
            targets. A ClientSigner approval performed with signing is included;
            a missing API-user approval is not.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SignOperation'
            - type: 'null'
      description: >-
        SigningRequestOperation is one current API workflow action. It is
        output-only and does not grant permission to execute it.
      additionalProperties: false
      allOf:
        - x-protobuf-oneof: body
          if:
            type: object
          then:
            oneOf:
              - required:
                  - approve
                properties:
                  approve:
                    not:
                      type: 'null'
              - required:
                  - sign
                properties:
                  sign:
                    not:
                      type: 'null'
              - not:
                  anyOf:
                    - required:
                        - approve
                      properties:
                        approve:
                          not:
                            type: 'null'
                    - required:
                        - sign
                      properties:
                        sign:
                          not:
                            type: 'null'
      x-protobuf-oneofs:
        body:
          - approve
          - sign
    mpcvault.platform.v1.EVMGas:
      type: object
      properties:
        maxFee:
          type:
            - string
            - 'null'
          description: >-
            Price cap in wei per gas as a non-negative decimal integer string:
            gasPrice for legacy transactions or maxFeePerGas for EIP-1559.
            Required on custom EVM networks; otherwise omission lets the service
            select gas prices. null when not set.
          example: '30000000000'
          pattern: ^[0-9]+$
        maxPriorityFee:
          type:
            - string
            - 'null'
          description: >-
            EIP-1559 tip cap in wei per gas as a non-negative decimal integer
            string. Applied only with maxFee on networks supporting priority
            fees; otherwise ignored. A positive value must be less than maxFee.
            When omitted with maxFee, defaults to 30000000000 on Polygon and 0
            elsewhere. Network configuration determines the transaction type.
          example: '1500000000'
          pattern: ^[0-9]+$
        gasLimit:
          type:
            - string
            - 'null'
          description: >-
            Maximum gas-unit count as a positive decimal integer string within
            uint64 range. Omission with maxFee uses a network- and
            request-specific default. Supplying only gasLimit leaves gas pricing
            to the service. null when not set.
          example: '21000'
          pattern: ^[0-9]+$
      description: >-
        EVM transaction fee settings. maxFee is a price cap in wei per gas;
        maxPriorityFee is applied only with maxFee on priority-fee networks.
        gasLimit is a gas-unit count. Supplying only gasLimit leaves gas pricing
        to the service.
      additionalProperties: false
    mpcvault.platform.v1.AptosGas:
      type: object
      properties:
        maxGasAmount:
          type:
            - string
            - 'null'
          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.
          pattern: ^[0-9]+$
        gasUnitPrice:
          type:
            - string
            - 'null'
          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.
          pattern: ^[0-9]+$
      additionalProperties: false
      description: >-
        An object with neither `maxGasAmount` nor `gasUnitPrice` is treated as
        no custom gas settings.
    mpcvault.platform.v1.SuiGas:
      type: object
      properties:
        budget:
          type:
            - string
            - 'null'
          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.
          pattern: ^[0-9]+$
        price:
          type:
            - string
            - 'null'
          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.
          pattern: ^[0-9]+$
      additionalProperties: false
      description: >-
        An object with neither `budget` nor `price` is treated as no custom gas
        settings.
    mpcvault.platform.v1.SolanaJito:
      type: object
      properties:
        tip:
          description: >-
            Jito tip payment. Recipient and amount are required before delivery
            to ClientSigner. Amount is in lamports and must fit uint64 on Solana
            and Sonic SVM.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.NativeAssetTransfer'
            - type: 'null'
        platformFee:
          description: >-
            Platform payment. Recipient and amount are required before delivery
            to ClientSigner, including for "0". Amount is in lamports and must
            fit uint64 on Solana and Sonic SVM.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.NativeAssetTransfer'
            - type: 'null'
      description: >-
        Output-only native-asset additional payment plan, paid by the enclosing
        transaction's from account. Presence identifies Jito even when details
        are unavailable before preparation. Both actual payments must be present
        before ClientSigner delivery; recipients, amounts and configured fee
        limits must match prepared transfers exactly. Changed payments require
        verification and callback acceptance again. Missing details do not
        authorize spending. Rejected by CreateSigningRequest.
      additionalProperties: false
    mpcvault.platform.v1.AptosMessage.Message:
      type: object
      properties:
        address:
          type:
            - string
            - 'null'
          description: >-
            Address placed inside the message, as supplied (UTF-8 string, not
            validated against `from`). `null` when empty.
          example: <string>
        application:
          type:
            - string
            - 'null'
          description: >-
            Name or domain of the application the message is for, as supplied
            (UTF-8 string, unvalidated). `null` when empty.
          example: application
        chainId:
          type:
            - integer
            - string
            - 'null'
          description: >-
            Chain ID placed inside the message, for example `"1"`. Returned as a
            decimal string; `null` when absent or `0`.
          example: '1'
          format: int64
        message:
          type: string
          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
          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.NetworkInfo:
      type: object
      properties:
        evm:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMNetwork'
            - type: 'null'
        bitcoin:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.BitcoinNetwork'
            - type: 'null'
        tron:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.TronNetwork'
            - type: 'null'
        aptos:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.AptosNetwork'
            - type: 'null'
        sui:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SuiNetwork'
            - type: 'null'
        solana:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaNetwork'
            - type: 'null'
        ton:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.TonNetwork'
            - type: 'null'
        stellar:
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.StellarNetwork'
            - type: 'null'
      description: >-
        NetworkInfo identifies a blockchain network by its protocol and native
        network identifier. The selected body identifies the protocol family.
      additionalProperties: false
      allOf:
        - x-protobuf-oneof: body
          if:
            type: object
          then:
            oneOf:
              - required:
                  - aptos
                properties:
                  aptos:
                    not:
                      type: 'null'
              - required:
                  - bitcoin
                properties:
                  bitcoin:
                    not:
                      type: 'null'
              - required:
                  - evm
                properties:
                  evm:
                    not:
                      type: 'null'
              - required:
                  - solana
                properties:
                  solana:
                    not:
                      type: 'null'
              - required:
                  - stellar
                properties:
                  stellar:
                    not:
                      type: 'null'
              - required:
                  - sui
                properties:
                  sui:
                    not:
                      type: 'null'
              - required:
                  - ton
                properties:
                  ton:
                    not:
                      type: 'null'
              - required:
                  - tron
                properties:
                  tron:
                    not:
                      type: 'null'
              - not:
                  anyOf:
                    - required:
                        - aptos
                      properties:
                        aptos:
                          not:
                            type: 'null'
                    - required:
                        - bitcoin
                      properties:
                        bitcoin:
                          not:
                            type: 'null'
                    - required:
                        - evm
                      properties:
                        evm:
                          not:
                            type: 'null'
                    - required:
                        - solana
                      properties:
                        solana:
                          not:
                            type: 'null'
                    - required:
                        - stellar
                      properties:
                        stellar:
                          not:
                            type: 'null'
                    - required:
                        - sui
                      properties:
                        sui:
                          not:
                            type: 'null'
                    - required:
                        - ton
                      properties:
                        ton:
                          not:
                            type: 'null'
                    - required:
                        - tron
                      properties:
                        tron:
                          not:
                            type: 'null'
      x-protobuf-oneofs:
        body:
          - aptos
          - bitcoin
          - evm
          - solana
          - stellar
          - sui
          - ton
          - tron
    mpcvault.platform.v1.FungibleAssetApproval:
      type: object
      properties:
        evmErc20Approval:
          description: ERC20 allowance transaction on an EVM network.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMERC20Approval'
            - type: 'null'
      description: >-
        FungibleAssetApproval grants, updates or revokes permission to spend a
        holder's fungible asset. The body identifies the chain and approval
        standard; currently only EVM ERC20 is supported.
      additionalProperties: false
      allOf:
        - x-protobuf-oneof: body
          if:
            type: object
          then:
            oneOf:
              - required:
                  - evmErc20Approval
                properties:
                  evmErc20Approval:
                    not:
                      type: 'null'
              - not:
                  anyOf:
                    - required:
                        - evmErc20Approval
                      properties:
                        evmErc20Approval:
                          not:
                            type: 'null'
      x-protobuf-oneofs:
        body:
          - evmErc20Approval
    mpcvault.platform.v1.SwapQuote:
      type: object
      properties:
        from:
          description: >-
            Asset sold, with its source account and amount from the stored
            quote.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SwapQuoteAsset'
            - type: 'null'
        to:
          description: >-
            Asset bought, with its recipient account and amount from the stored
            quote.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SwapQuoteAsset'
            - type: 'null'
        route:
          description: Route stored on the quote.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SwapRoute'
            - type: 'null'
        slippage:
          type: string
          description: >-
            Stored quote tolerance as a decimal ratio: "0.005" means 0.5%. It is
            neither the original custom input nor realized execution slippage.
            Empty means unavailable.
          example: '0.005'
      description: >-
        SwapQuote is the quote stored next to a swap. It is not part of the
        chain transaction.
      additionalProperties: false
    mpcvault.platform.v1.ChainTransaction:
      type: object
      properties:
        evmSendNative:
          description: Evm_send_native uses the same fields as EVMSendNative.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMSendNative'
            - type: 'null'
        evmSendErc20:
          description: Evm_send_erc20 uses the same fields as EVMSendERC20.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMSendERC20'
            - type: 'null'
        evmSendCustom:
          description: Evm_send_custom uses the same fields as EVMSendCustom.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMSendCustom'
            - type: 'null'
        solanaSendNative:
          description: Solana_send_native uses the same fields as SolanaSendNative.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaSendNative'
            - type: 'null'
        solanaSendSplToken:
          description: Solana_send_spl_token uses the same fields as SolanaSendSPLToken.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaSendSPLToken'
            - type: 'null'
        solanaSendCustom:
          description: Solana_send_custom uses the same fields as SolanaSendCustom.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SolanaSendCustom'
            - type: 'null'
        suiSendNative:
          description: Sui_send_native uses the same fields as SuiSendNative.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SuiSendNative'
            - type: 'null'
        suiSendCoin:
          description: Sui_send_coin uses the same fields as SuiSendCoin.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SuiSendCoin'
            - type: 'null'
        suiSendCustom:
          description: Sui_send_custom uses the same fields as SuiSendCustom.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SuiSendCustom'
            - type: 'null'
      description: >-
        ChainTransaction is the chain body of a request that also carries
        MPCVault fields. The member that is set uses the same message as a plain
        send of that chain.
      additionalProperties: false
      allOf:
        - x-protobuf-oneof: body
          if:
            type: object
          then:
            oneOf:
              - required:
                  - evmSendCustom
                properties:
                  evmSendCustom:
                    not:
                      type: 'null'
              - required:
                  - evmSendErc20
                properties:
                  evmSendErc20:
                    not:
                      type: 'null'
              - required:
                  - evmSendNative
                properties:
                  evmSendNative:
                    not:
                      type: 'null'
              - required:
                  - solanaSendCustom
                properties:
                  solanaSendCustom:
                    not:
                      type: 'null'
              - required:
                  - solanaSendNative
                properties:
                  solanaSendNative:
                    not:
                      type: 'null'
              - required:
                  - solanaSendSplToken
                properties:
                  solanaSendSplToken:
                    not:
                      type: 'null'
              - required:
                  - suiSendCoin
                properties:
                  suiSendCoin:
                    not:
                      type: 'null'
              - required:
                  - suiSendCustom
                properties:
                  suiSendCustom:
                    not:
                      type: 'null'
              - required:
                  - suiSendNative
                properties:
                  suiSendNative:
                    not:
                      type: 'null'
              - not:
                  anyOf:
                    - required:
                        - evmSendCustom
                      properties:
                        evmSendCustom:
                          not:
                            type: 'null'
                    - required:
                        - evmSendErc20
                      properties:
                        evmSendErc20:
                          not:
                            type: 'null'
                    - required:
                        - evmSendNative
                      properties:
                        evmSendNative:
                          not:
                            type: 'null'
                    - required:
                        - solanaSendCustom
                      properties:
                        solanaSendCustom:
                          not:
                            type: 'null'
                    - required:
                        - solanaSendNative
                      properties:
                        solanaSendNative:
                          not:
                            type: 'null'
                    - required:
                        - solanaSendSplToken
                      properties:
                        solanaSendSplToken:
                          not:
                            type: 'null'
                    - required:
                        - suiSendCoin
                      properties:
                        suiSendCoin:
                          not:
                            type: 'null'
                    - required:
                        - suiSendCustom
                      properties:
                        suiSendCustom:
                          not:
                            type: 'null'
                    - required:
                        - suiSendNative
                      properties:
                        suiSendNative:
                          not:
                            type: 'null'
      x-protobuf-oneofs:
        body:
          - evmSendCustom
          - evmSendErc20
          - evmSendNative
          - solanaSendCustom
          - solanaSendNative
          - solanaSendSplToken
          - suiSendCoin
          - suiSendCustom
          - suiSendNative
    mpcvault.platform.v1.BatchPaymentBody:
      type: object
      properties:
        evmSendNative:
          description: Evm_send_native uses the same fields as EVMBatchSendNative.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMBatchSendNative'
            - type: 'null'
        evmSendErc20:
          description: Evm_send_erc20 uses the same fields as EVMBatchSendERC20.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMBatchSendERC20'
            - type: 'null'
        btcSendNative:
          description: Btc_send_native uses the same fields as BTCBatchSendNative.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.BTCBatchSendNative'
            - type: 'null'
        suiSendNative:
          description: Sui_send_native uses the same fields as SUIBatchSendNative.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SUIBatchSendNative'
            - type: 'null'
        suiSendCoin:
          description: Sui_send_coin uses the same fields as SUIBatchSendCoin.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.SUIBatchSendCoin'
            - type: 'null'
      description: >-
        BatchPaymentBody describes the sender, asset and recipients, as approval
        context or the payment body. BatchPaymentSend carries gas_limit and
        nonce separately.
      additionalProperties: false
      allOf:
        - x-protobuf-oneof: transaction
          if:
            type: object
          then:
            oneOf:
              - required:
                  - btcSendNative
                properties:
                  btcSendNative:
                    not:
                      type: 'null'
              - required:
                  - evmSendErc20
                properties:
                  evmSendErc20:
                    not:
                      type: 'null'
              - required:
                  - evmSendNative
                properties:
                  evmSendNative:
                    not:
                      type: 'null'
              - required:
                  - suiSendCoin
                properties:
                  suiSendCoin:
                    not:
                      type: 'null'
              - required:
                  - suiSendNative
                properties:
                  suiSendNative:
                    not:
                      type: 'null'
              - not:
                  anyOf:
                    - required:
                        - btcSendNative
                      properties:
                        btcSendNative:
                          not:
                            type: 'null'
                    - required:
                        - evmSendErc20
                      properties:
                        evmSendErc20:
                          not:
                            type: 'null'
                    - required:
                        - evmSendNative
                      properties:
                        evmSendNative:
                          not:
                            type: 'null'
                    - required:
                        - suiSendCoin
                      properties:
                        suiSendCoin:
                          not:
                            type: 'null'
                    - required:
                        - suiSendNative
                      properties:
                        suiSendNative:
                          not:
                            type: 'null'
      x-protobuf-oneofs:
        transaction:
          - btcSendNative
          - evmSendErc20
          - evmSendNative
          - suiSendCoin
          - suiSendNative
    mpcvault.platform.v1.FiatBeneficiary:
      type: object
      properties:
        name:
          type: string
          description: >-
            Display name. An individual uses the first and last name, or the
            full name when those are empty. A business uses the business name.
          example: Ada Lovelace
        kind:
          type: string
          description: Individual or business. Any other stored type leaves this empty.
          example: individual
        bankAccount:
          description: >-
            Display-only bank account summary. Other payment methods are not
            returned.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.FiatBankAccount'
            - type: 'null'
      description: >-
        FiatBeneficiary is a fiat recipient display summary. Beneficiary IDs,
        emails, birth dates, full account numbers and routing numbers are
        omitted for all tokens and signing callbacks.
      additionalProperties: false
    mpcvault.platform.v1.EVMInputDataDecode.Argument:
      type: object
      properties:
        name:
          type: string
          description: >-
            ABI parameter name, empty string for an unnamed parameter; a tuple
            member is named `parameter.field`.
        type:
          type: string
          description: >-
            ABI type of the argument as a string, for example `address`,
            `uint256`, `bytes32`, `address[]` or `tuple`.
        data:
          type: string
          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.SignatureContainer.SignResponse:
      type: object
      properties:
        ecdsaSignature:
          anyOf:
            - $ref: >-
                #/components/schemas/mpcvault.platform.v1.SignatureContainer.ECDSASignature
            - type: 'null'
          description: >-
            ECDSA signature, for EVM, TRON and Bitcoin wallets. `R`, `S` and `V`
            are base-10 integer strings.
        eddsaSignature:
          type: string
          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.
          format: byte
          example: >-
            AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+Pw==
      additionalProperties: false
      allOf:
        - x-protobuf-oneof: signature
          if:
            type: object
          then:
            oneOf:
              - required:
                  - ecdsaSignature
                properties:
                  ecdsaSignature:
                    not:
                      type: 'null'
              - required:
                  - eddsaSignature
                properties:
                  eddsaSignature:
                    not:
                      type: 'null'
              - not:
                  anyOf:
                    - required:
                        - ecdsaSignature
                      properties:
                        ecdsaSignature:
                          not:
                            type: 'null'
                    - required:
                        - eddsaSignature
                      properties:
                        eddsaSignature:
                          not:
                            type: 'null'
      x-protobuf-oneofs:
        signature:
          - ecdsaSignature
          - eddsaSignature
      description: Exactly one of `ecdsaSignature` and `eddsaSignature` is set.
    mpcvault.platform.v1.ApproveOperation:
      type: object
      properties: {}
      additionalProperties: false
    mpcvault.platform.v1.SignOperation:
      type: object
      properties:
        clientSignerPublicKeys:
          type: array
          items:
            type: string
          description: >-
            Distinct eligible SSH keys for this request's API signing path, not
            all organization signers. Keys are alternative targets, not
            cumulative requirements. Always nonempty; the current binding
            supports at most one target.
          minItems: 1
          uniqueItems: true
      additionalProperties: false
    mpcvault.platform.v1.NativeAssetTransfer:
      type: object
      properties:
        to:
          type: string
          description: >-
            Recipient account address in the address format of the enclosing
            network.
        amount:
          type: string
          description: >-
            Non-negative decimal integer string in the network's smallest
            native-asset unit, without a decimal point or exponent.
            Chain-specific limits apply. "0" means zero; empty means
            unavailable.
          example: '10000'
      description: >-
        NativeAssetTransfer describes one transfer of the enclosing network's
        native asset. Its network and paying account are determined by the
        enclosing transaction.
      additionalProperties: false
    mpcvault.platform.v1.EVMNetwork:
      type: object
      properties:
        chainId:
          type: string
          description: >-
            Native EIP-155 chain ID. For example, 1 identifies Ethereum Mainnet
            and 8453 identifies Base Mainnet.
          example: '1'
          format: uint64
      additionalProperties: false
    mpcvault.platform.v1.BitcoinNetwork:
      type: object
      properties:
        genesisHash:
          type: string
          description: >-
            Full genesis block hash as 64 lowercase hexadecimal characters
            without a 0x prefix, using the same byte order as Bitcoin RPC block
            hash strings. It distinguishes networks such as Mainnet and
            Testnet3.
      additionalProperties: false
    mpcvault.platform.v1.TronNetwork:
      type: object
      properties:
        chainId:
          type: integer
          description: >-
            TRON's native unsigned 32-bit chain ID, derived from the last four
            bytes of the genesis block hash. 728126428 identifies Mainnet.
          format: uint32
          example: 728126428
      additionalProperties: false
    mpcvault.platform.v1.AptosNetwork:
      type: object
      properties:
        chainId:
          type: string
          description: >-
            Native numeric chain ID returned by the ledger API. Use 1 for Aptos
            Mainnet and 126 for Movement Mainnet. Movement uses this protocol
            body.
          example: '1'
          format: uint64
      additionalProperties: false
    mpcvault.platform.v1.SuiNetwork:
      type: object
      properties:
        chainIdentifier:
          type: string
          description: >-
            Sui's native chain identifier: the first four bytes of the genesis
            checkpoint digest, encoded as eight lowercase hexadecimal characters
            without a 0x prefix. 35834a8a identifies Mainnet.
          example: 35834a8a
      additionalProperties: false
    mpcvault.platform.v1.SolanaNetwork:
      type: object
      properties:
        genesisHash:
          type: string
          description: >-
            Full, case-sensitive Base58 genesis hash returned by getGenesisHash.
            Sonic SVM uses this protocol body with its own genesis hash.
          example: 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d
      additionalProperties: false
    mpcvault.platform.v1.TonNetwork:
      type: object
      properties:
        globalId:
          type: integer
          description: >-
            Signed native network global_id. -239 identifies TON Mainnet;
            preserve its sign.
          format: int32
          example: -239
      additionalProperties: false
    mpcvault.platform.v1.StellarNetwork:
      type: object
      properties:
        networkPassphrase:
          type: string
          description: >-
            Public network passphrase used to compute the Stellar network ID.
            Preserve the exact text, including case, spaces and punctuation.
          example: Public Global Stellar Network ; September 2015
      additionalProperties: false
    mpcvault.platform.v1.EVMERC20Approval:
      type: object
      properties:
        chainId:
          type: string
          description: Chain id of the network.
          example: '1'
          format: uint64
        from:
          type: string
          description: Account granting the allowance.
          example: <string>
        tokenContractAddress:
          type: string
          description: Token contract being approved.
          example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
        spender:
          type: string
          description: Address being approved to spend the token.
          example: '0x1111111254EEB25477B68fb85Ed929f73A960582'
        amount:
          type: string
          description: >-
            Allowance in the token's smallest unit. The stored amount is
            multiplied by 10^decimals, the same scaling as EVMSendERC20.amount.
          example: '1000'
        gasFee:
          description: Gas_fee uses the same fields as EVMGas.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.EVMGas'
            - type: 'null'
        nonce:
          type:
            - integer
            - string
            - 'null'
          description: >-
            Nonce of the approval. Empty or non-numeric stored nonces are
            omitted.
          example: '1'
          format: int64
      description: >-
        EVMERC20Approval is an ERC20 allowance transaction on an EVM network,
        independent of the business requesting it.
      additionalProperties: false
    mpcvault.platform.v1.SwapQuoteAsset:
      type: object
      properties:
        network:
          description: >-
            Network identifies the blockchain network of this side of the quote
            using its protocol and native network identifier.
          anyOf:
            - $ref: '#/components/schemas/mpcvault.platform.v1.NetworkInfo'
            - type: 'null'
        accountAddress:
          type: string
          description: >-
            Source account on the from side or the recipient account on the to
            side of the quote.
          example: <string>
        assetIdentifier:
          type: string
          description: >-
            Asset_identifier identifies the asset on network: an EVM token
            contract address, a Solana mint address, or a Sui coin type. Empty
            for the native asset.
          example: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'
        amount:
          type: string
          description: Amount text stored on the quote. It is not scaled by token decimals.
          example: '1'
      description: >-
        SwapQuoteAsset is the asset, account and amount on one side of a swap
        quote.
      additionalProperties: false
    mpcvault.platform.v1.SwapRoute:
      type: object
      properties:
        name:
          type: string
          description: Route name stored on the quote.
          example: route
        minReceiveAmount:
          type: string
          description: >-
            Minimum receive amount as a decimal in whole units of SwapQuote.to's
            asset. SwapQuote.to.amount is the expected amount before slippage
            tolerance.
          example: '1.9'
        gasCost:
          type: string
          description: >-
            Stored decimal fee estimate in whole units of
            SwapQuote.from.network's native asset, not a gas-unit count. Empty
            means unavailable.
          example: '0.00021'
        gasCostUsd:
          type: string
          description: >-
            US dollar figure stored on the quote. It is not a price looked up
            when the signing request is read.
          example: '0.42'
      additionalProperties: false
    mpcvault.platform.v1.EVMBatchSendNative:
      type: object
      properties:
        chainId:
          type: string
          description: >-
            Chain id of the transaction. Custom EVM networks are not supported
            for batch payments.
          example: '137'
          format: uint64
        from:
          type: string
          description: Sender wallet address. It has to be in this vault.
          example: <string>
        recipients:
          type: array
          items:
            $ref: '#/components/schemas/mpcvault.platform.v1.BatchPaymentRecipient'
          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
        batchContractAddress:
          type: string
          description: >-
            Output-only execution contract, not a recipient. ClientSigner
            verifies the prepared transaction target against it. Rejected by
            CreateBatchPayment; it cannot select a contract.
          readOnly: true
      required:
        - chainId
        - from
        - recipients
      additionalProperties: false
    mpcvault.platform.v1.EVMBatchSendERC20:
      type: object
      properties:
        chainId:
          type: string
          description: >-
            Chain id of the transaction. Custom EVM networks are not supported
            for batch payments.
          example: '137'
          format: uint64
        from:
          type: string
          description: Sender wallet address. It has to be in this vault.
          example: <string>
        tokenContractAddress:
          type: string
          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.
          example: <string>
        recipients:
          type: array
          items:
            $ref: '#/components/schemas/mpcvault.platform.v1.BatchPaymentRecipient'
          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
        batchContractAddress:
          type: string
          description: >-
            Output-only execution contract, separate from
            token_contract_address. ClientSigner verifies the prepared
            transaction target against it. Rejected by CreateBatchPayment; it
            cannot select a contract.
          readOnly: true
      required:
        - chainId
        - from
        - tokenContractAddress
        - recipients
      additionalProperties: false
    mpcvault.platform.v1.BTCBatchSendNative:
      type: object
      properties:
        from:
          type: string
          description: Sender wallet address. It has to be in this vault.
          example: <string>
        recipients:
          type: array
          items:
            $ref: '#/components/schemas/mpcvault.platform.v1.BatchPaymentRecipient'
          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
      required:
        - from
        - recipients
      additionalProperties: false
    mpcvault.platform.v1.SUIBatchSendNative:
      type: object
      properties:
        from:
          type: string
          description: Sender wallet address. It has to be in this vault.
          example: <string>
        recipients:
          type: array
          items:
            $ref: '#/components/schemas/mpcvault.platform.v1.BatchPaymentRecipient'
          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
      required:
        - from
        - recipients
      additionalProperties: false
    mpcvault.platform.v1.SUIBatchSendCoin:
      type: object
      properties:
        from:
          type: string
          description: Sender wallet address. It has to be in this vault.
          example: <string>
        coinTag:
          type: string
          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'
          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
      required:
        - from
        - coinTag
        - recipients
      additionalProperties: false
    mpcvault.platform.v1.FiatBankAccount:
      type: object
      properties:
        accountLast4:
          type: string
          description: >-
            Final four characters after removing spaces and hyphens. Set only
            when the normalized account has more than four ASCII letters/digits
            and no other characters. Otherwise empty; the full account is never
            returned as a fallback.
          example: '6789'
          pattern: ^(?:[A-Za-z0-9]{4})?$
        accountType:
          type: string
          description: Stored account type.
          example: checking
        bic:
          type: string
          description: Stored BIC.
          example: CHASUS33
        countryCode:
          type: string
          description: Stored bank country code.
          example: US
        bankName:
          type: string
          description: Stored bank name.
          example: Example Bank
        transferType:
          type: string
          description: Stored transfer type.
          example: WIRE
      description: >-
        FiatBankAccount is the same bank/payment summary for all tokens and
        signing callbacks. Full account and routing numbers are never exposed.
      additionalProperties: false
    mpcvault.platform.v1.SignatureContainer.ECDSASignature:
      type: object
      properties:
        R:
          type: string
          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
          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
          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.BatchPaymentRecipient:
      type: object
      properties:
        address:
          type: string
          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).
          example: <string>
        amount:
          type: string
          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:
          type:
            - string
            - 'null'
          description: >-
            Note for this entry in the batch payment. At most 1000 Unicode code
            points.
          example: Monthly payroll
          maxLength: 1000
      required:
        - address
        - amount
      additionalProperties: false
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-mtoken
      description: Your API token. Required for all API requests.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.