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

# Server — sign a message with a WAAS wallet

> Signs a message using the specified WAAS wallet through an MPC ceremony.



## OpenAPI

````yaml https://app.dynamic.xyz/api-docs/public-api.yaml post /server/{environmentId}/waas/{walletId}/signMessage
openapi: 3.0.1
info:
  title: Dashboard API
  description: Dashboard API documentation
  version: 1.0.0
servers:
  - url: https://app.dynamicauth.com/api/v0
  - url: https://app.dynamic.xyz/api/v0
  - url: http://localhost:3333/api/v0
security: []
tags:
  - name: Analytics
    description: Query usage analytics and event counts for your environment.
  - name: SDK
    description: SDK-facing endpoints consumed by embedded Dynamic clients.
  - name: Server
    description: Server-side SDK endpoints authenticated by environment API tokens.
  - name: Organizations
    description: >-
      Manage organizations — the top-level container for all environments and
      projects.
  - name: Projects
    description: Manage projects that group related environments under an organization.
  - name: Environments
    description: >-
      Manage environments (live and sandbox) where your authentication
      configuration lives.
  - name: Users
    description: List, search, and manage authenticated users within an environment.
  - name: Invites
    description: >-
      Manage invitation links that grant specific external users access to your
      environment.
  - name: Tokens
    description: >-
      Create and manage API tokens used to authenticate requests to the Dynamic
      API.
  - name: Origins
    description: >-
      Configure allowed origins (CORS) for SDK and API access to your
      environment.
  - name: Allowlists
    description: >-
      Manage allowlists to control which wallet addresses or email addresses can
      access your environment.
  - name: Wallets
    description: View and manage wallets linked to users in your environment.
  - name: Members
    description: Manage team members and their roles within an organization.
  - name: Sessions
    description: View and revoke active user sessions within an environment.
  - name: Settings
    description: Read and update environment-level configuration settings.
  - name: Exchanges
    description: >-
      Configure exchange integrations (Coinbase, Binance, etc.) for fiat on-ramp
      within your environment.
  - name: Yield
    description: List yield vaults registered for your environment.
  - name: Providers
    description: >-
      List, enable, disable, and configure authentication providers (OAuth,
      email, wallet, SMS, etc.) for your environment.
  - name: Captcha
    description: >-
      Configure captcha verification (provider, site key, secret key) for your
      environment.
  - name: Gates
    description: >-
      Define access gates that restrict environment entry to users who meet
      specific criteria.
  - name: Chains
    description: >-
      Manage the blockchain networks available for wallet connection in your
      environment.
  - name: Exports
    description: Export user and wallet data from your environment as downloadable files.
  - name: Events
    description: Browse the event log of actions performed within your environment.
  - name: Webhooks
    description: >-
      Create and manage webhooks to receive real-time events (user.created,
      wallet.linked, etc.) at your endpoint.
  - name: Custom Fields
    description: >-
      Define and manage custom metadata fields collected from users at sign-up
      or login.
  - name: MfaSettings
    description: >-
      Configure multi-factor authentication (MFA) policies for your
      organization.
  - name: Mfa
    description: Manage MFA enrollment and verification for individual users.
  - name: CustomHostnames
    description: >-
      Configure custom hostnames for white-labeling the Dynamic authentication
      experience.
  - name: TestAccount
    description: >-
      Manage test accounts used for automated testing and QA within an
      environment.
  - name: NameServices
    description: >-
      Configure name service integrations (ENS, Unstoppable Domains, etc.) for
      human-readable wallet addresses.
  - name: GlobalWallets
    description: >-
      Manage global wallets shared across multiple environments in an
      organization.
  - name: GlobalWalletConnections
    description: Configure which environments can access and use global wallets.
  - name: GlobalWalletAccessControl
    description: Control which users and roles can access and operate global wallets.
  - name: UserApiTokens
    description: >-
      Create and manage user-scoped API tokens for programmatic access on behalf
      of a user.
  - name: Waas
    description: Wallet-as-a-Service endpoints for creating and managing embedded wallets.
  - name: WalletConnect
    description: Configure WalletConnect integration settings for your environment.
  - name: Checkout
    description: >-
      Accept crypto payments and deposits from any wallet. Settle in any token
      you choose.
  - name: Flow
    description: >-
      Accept crypto payments, deposits, and withdrawals. Amount and destination
      are fixed server-side at create; the post-create lifecycle is driven with
      a capability session token.
  - name: FlowAnalytics
    description: >-
      Query aggregated analytics and paginated transaction lists for the Flow
      product.
  - name: Gasless
    description: >-
      Query billing summaries and paginated transaction lists for sponsored
      (gasless) transactions.
  - name: Custom Networks
    description: >-
      Add and manage custom EVM-compatible networks beyond the built-in chain
      list.
  - name: Chainalysis
    description: >-
      Configure Chainalysis integration for blockchain address screening and
      risk assessment.
  - name: Visits
    description: Track and query user visit activity within your environment.
  - name: ExternalJwt
    description: >-
      Configure external JWT providers so existing auth tokens can be used with
      Dynamic.
  - name: SDK Views
    description: >-
      Manage SDK view configurations that customize the appearance of Dynamic
      modals and flows.
  - name: DeeplinkUrls
    description: Configure deep link URLs for mobile app integration with the Dynamic SDK.
  - name: OrganizationSettings
    description: >-
      Read and update organization-level settings such as approval workflow
      configuration.
  - name: AdminActions
    description: >-
      Manage admin action requests that require approval from another
      administrator.
  - name: ClientGrant
    description: |
      OAuth 2.0 Device Authorization Grant flow (RFC 8628) used by first-party
      Dynamic clients (CLI, MCP server, demo apps, IDE plugins) to obtain a
      revocable, 30-day client JWT without ever seeing the user's dashboard
      session token.
  - name: AuthorizedClients
    description: |
      Manage first-party clients (CLI / MCP / demo / IDE plugins) authorized
      to act as a dashboard user. Surfaced under Profile → Authorized Clients.
  - name: Kyb
    description: >-
      Verify a business's identity via AI Prise passthrough and check KYB tier
      status.
  - name: BusinessAccounts
    description: >-
      Administer the business accounts (multi-operator wallet containers) that
      end users create in an environment.
  - name: ScreeningPolicies
    description: >
      Author per-provider address screening policies that map TRM and
      Chainalysis

      signals to block, alert, or allow, plus per-address exceptions. The

      sanctions floor sits underneath every policy and is not configurable.
paths:
  /server/{environmentId}/waas/{walletId}/signMessage:
    post:
      tags:
        - Server
      summary: Server — sign a message with a WAAS wallet
      description: Signs a message using the specified WAAS wallet through an MPC ceremony.
      operationId: signMessageServer
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/walletId'
        - $ref: '#/components/parameters/serverSignerProofHeader'
      requestBody:
        description: Sign Message Request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignMessageWithWaasRequest'
      responses:
        '200':
          description: >
            Successfully created a room for signing message ceremony. Streamed
            as `text/event-stream` (NOT JSON) by default; the

            JSON body is returned only when the HTTP transport is selected.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenRoomResponse'
            text/event-stream:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  parameters:
    environmentId:
      in: path
      name: environmentId
      required: true
      description: ID of the environment
      schema:
        $ref: '#/components/schemas/uuid'
    walletId:
      in: path
      name: walletId
      schema:
        $ref: '#/components/schemas/uuid'
      required: true
      description: UUID of the wallet
    serverSignerProofHeader:
      in: header
      name: x-dyn-server-signing-proof
      required: false
      description: >-
        Request proof: a compact ES256 JWS, signed with the server's registered
        key, binding this request to a single-use `nonce` from `GET /nonces`.
        The JWS header is `ServerSignerProofHeader` and its payload is
        `ServerSignerProofPayload`. Required when the request carries a DYN API
        token and no JWT, and a server signer with a registered key controls the
        resource. A proof that is present is always verified.
      schema:
        type: string
        pattern: ^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$
        maxLength: 4096
  schemas:
    SignMessageWithWaasRequest:
      type: object
      required:
        - message
      properties:
        message:
          $ref: '#/components/schemas/NonEmptyStringWith204800MaxLength'
        isFormatted:
          description: >-
            When true, `message` is treated as a pre-computed 32-byte hash (64
            hex characters, optionally with a leading `0x`) and signed by the
            MPC server as-is ("raw signing"). When false or omitted, the SDK
            hashes the message bytes using the chain's standard algorithm (e.g.
            keccak256 for EVM).
          type: boolean
        roomId:
          description: MPC room identifier for the signing session
          type: string
        context:
          $ref: '#/components/schemas/SignMessageContext'
        bitcoinConfig:
          $ref: '#/components/schemas/WalletBitcoinConfig'
        approvalQuorum:
          $ref: '#/components/schemas/SignMessageApprovalQuorum'
        shareSetId:
          allOf:
            - $ref: '#/components/schemas/uuid'
          description: |
            Optional identifier of the share set this operation targets. When
            omitted, the active rootUser share set for `walletId` is resolved
            server-side (backwards-compat fallback for older SDKs).
    OpenRoomResponse:
      type: object
      required:
        - roomId
      properties:
        roomId:
          description: Unique identifier of the opened MPC room
          type: string
        serverKeygenIds:
          description: List of existing server-side key generation identifiers
          type: array
          items:
            $ref: '#/components/schemas/NonEmptyBase58StringWith100MaxLength'
        newServerKeygenIds:
          description: List of newly generated server-side key generation identifiers
          type: array
          items:
            $ref: '#/components/schemas/NonEmptyBase58StringWith100MaxLength'
        walletId:
          $ref: '#/components/schemas/uuid'
    uuid:
      type: string
      pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
      minLength: 36
      maxLength: 36
      example: 95b11417-f18f-457f-8804-68e361f9164f
    NonEmptyStringWith204800MaxLength:
      type: string
      maxLength: 204800
      description: A string with a max length of 204800 characters
    SignMessageContext:
      type: object
      properties:
        evmTransaction:
          $ref: '#/components/schemas/SignMessageEvmTransaction'
        evmUserOperation:
          $ref: '#/components/schemas/SignMessageEvmUserOperation'
        svmTransaction:
          $ref: '#/components/schemas/SignMessageSvmTransaction'
        suiTransaction:
          $ref: '#/components/schemas/SignMessageSuiTransaction'
        btcTransaction:
          $ref: '#/components/schemas/SignMessageBtcTransaction'
        eip7702Auth:
          $ref: '#/components/schemas/SignMessageEip7702Auth'
        evmMessage:
          $ref: '#/components/schemas/SignMessageEvmMessage'
        svmMessage:
          $ref: '#/components/schemas/NonEmptyStringWith204800MaxLength'
        suiMessage:
          $ref: '#/components/schemas/NonEmptyStringWith204800MaxLength'
        stellarMessage:
          $ref: '#/components/schemas/NonEmptyStringWith204800MaxLength'
        aleoMessage:
          $ref: '#/components/schemas/NonEmptyStringWith204800MaxLength'
        evmTypedData:
          $ref: '#/components/schemas/SignMessageEvmTypedData'
        rawSign:
          $ref: '#/components/schemas/SignMessageRawSign'
        domain:
          $ref: '#/components/schemas/NonEmptyDomainUrlWith255MaxLength'
    WalletBitcoinConfig:
      type: object
      properties:
        addressType:
          description: Bitcoin address type format (e.g. p2wpkh, p2sh, p2pkh)
          type: string
        network:
          description: Bitcoin network identifier (e.g. mainnet, testnet)
          type: string
    SignMessageApprovalQuorum:
      type: object
      description: >-
        Signing-quorum consent evidence for a business-account-governed sign —
        the Initiator's own signed Intent (or, when redeeming a stored proposal
        from a non-Initiator session, `initiatorProof` instead). A top-level
        sibling of `context`, never nested under it — `context` describes only
        the operation being signed. Approvals collected from other members are
        tracked server-side against the proposal, never sent by a client.
        `intentSignature` is required when first submitting an initiator-signed
        intent. It is omitted when redeeming an existing proposal, where the
        server matches the exact intent and restores the stored initiator
        signature.
      required:
        - intent
      properties:
        intent:
          $ref: '#/components/schemas/SignMessageApprovalQuorumIntent'
        intentSignature:
          $ref: '#/components/schemas/BusinessAccountIntentSignature'
        initiatorProof:
          allOf:
            - $ref: '#/components/schemas/NonEmptyStringWith4096MaxLength'
          description: >-
            Present when the request redeeming this Intent is not the
            Initiator's own live session. Absent means the request's own bearer
            token stands for the Initiator instead.
    NonEmptyBase58StringWith100MaxLength:
      type: string
      pattern: ^[1-9A-HJ-NP-Za-km-z]+$
      maxLength: 100
      description: A base58 string with a max length of 100 characters
    BadRequest:
      type: object
      properties:
        error:
          description: Human-readable error message
          type: string
        code:
          description: >-
            Machine-readable reason for the 400, set only by endpoints that
            distinguish rejections. Flow endpoints use exchange_not_supported
            and exchange_currency_unsupported.
          type: string
          example: exchange_currency_unsupported
    Unauthorized:
      type: object
      properties:
        error:
          description: Human-readable error message describing the authentication failure
          type: string
          example: No jwt provided!
    Forbidden:
      type: object
      properties:
        error:
          description: Human-readable error message
          type: string
          example: Access Forbidden
        code:
          description: >-
            Machine-readable reason for the 403, set only by endpoints that
            distinguish rejections. Flow endpoints use sanctions_blocked,
            session_token_invalid and risk_blocked.
          type: string
          example: sanctions_blocked
    NotFound:
      type: object
      required:
        - error
        - code
      properties:
        error:
          description: Human-readable error message
          type: string
          example: Not Found
        code:
          description: >-
            Machine-readable error code. Flow endpoints use
            exchange_not_configured when the requested exchange isn't set up for
            the environment.
          type: string
          example: not_found
    InternalServerError:
      type: object
      properties:
        error:
          description: Human-readable error message
          type: string
          example: Internal Server Error
    SignMessageEvmTransaction:
      type: object
      description: Standard EVM transaction
      properties:
        to:
          type: string
          description: Recipient address
        chainId:
          type: number
          description: Chain ID
        data:
          type: string
          description: Transaction data as hex string
        gas:
          type: string
          description: Gas limit as hex string
        gasPrice:
          type: string
          description: Gas price as hex string
        maxFeePerGas:
          type: string
          description: Maximum fee per gas as hex string
        maxPriorityFeePerGas:
          type: string
          description: Maximum priority fee per gas as hex string
        nonce:
          type: number
          description: Transaction nonce
        value:
          type: string
          description: Transaction value as hex string
      required:
        - chainId
        - to
    SignMessageEvmUserOperation:
      type: object
      description: User Operation (ERC-4337)
      properties:
        chainId:
          type: number
          description: Chain identifier needed for user operation hash calculation
        entryPoint:
          type: string
          description: Address of the entry point contract
        operation:
          $ref: '#/components/schemas/SignMessageUserOperationData'
    SignMessageSvmTransaction:
      type: object
      description: Solana serialized transactions
      properties:
        chainId:
          type: string
          description: Chain identifier
        method:
          type: string
          description: Method identifier
        serializedTransactions:
          type: array
          items:
            type: string
          description: Array of serialized transaction strings
      required:
        - chainId
        - method
        - serializedTransactions
    SignMessageSuiTransaction:
      type: object
      description: Sui BCS serialized transaction as hex string
      properties:
        chainId:
          $ref: '#/components/schemas/NonEmptyStringWith255MaxLength'
        serializedTransaction:
          $ref: '#/components/schemas/NonEmptyStringWith204800MaxLength'
      required:
        - chainId
        - serializedTransaction
    SignMessageBtcTransaction:
      type: object
      description: Bitcoin PSBT transaction for signing
      properties:
        psbt:
          type: string
          description: PSBT (Partially Signed Bitcoin Transaction) in base64 or hex format
        chainId:
          type: string
          description: Chain identifier (1=mainnet, 2=testnet, 3=signet)
        accountAddress:
          type: string
          description: >-
            Bitcoin address of the signer (deprecated - use EAC accountAddress
            instead)
      required:
        - psbt
        - chainId
    SignMessageEip7702Auth:
      type: object
      description: EIP-7702 auth
      properties:
        address:
          type: string
          description: Address that signed the authorization
        chainId:
          type: number
          description: Chain ID
        nonce:
          type: number
          description: Nonce
      required:
        - address
        - chainId
        - nonce
    SignMessageEvmMessage:
      description: >-
        EVM message that can be either a plain string or an object with raw hex
        data
      anyOf:
        - type: string
        - type: object
          required:
            - raw
          properties:
            raw:
              type: string
              description: Raw hex data
    SignMessageEvmTypedData:
      type: object
      description: EIP-712 typed data payload
      properties:
        domain:
          $ref: '#/components/schemas/Eip712Domain'
        message:
          type: object
          description: Typed data message object
        primaryType:
          description: Primary type name for EIP-712 typed data signing
          type: string
        types:
          $ref: '#/components/schemas/Eip712Types'
      required:
        - domain
        - message
        - primaryType
        - types
    SignMessageRawSign:
      type: object
      description: >-
        Chain-agnostic raw digest signing payload; the digest must equal
        hashFunction(prefix + payload)
      properties:
        payload:
          type: string
          maxLength: 204800
          description: Pre-image the digest is derived from, as a hex string
        hashFunction:
          type: string
          description: >-
            Hash applied to (prefix + payload) to reproduce the digest being
            signed. Allowed algorithms: sha512Half (e.g. XRPL single-signer),
            keccak256 (screened against EVM operations), sha256 (TRON, SVM, TON;
            guarded against 32-byte pre-hashed payloads that could reproduce a
            Bitcoin double-SHA256 sighash), and blake2b (Sui, 32-byte digest)
          enum:
            - sha512Half
            - keccak256
            - sha256
            - blake2b
        prefix:
          type: string
          maxLength: 1024
          description: >-
            Optional hex prefix prepended to the payload before hashing, e.g.
            the XRPL single-signer 'STX\0' prefix (53545800)
      required:
        - payload
        - hashFunction
    NonEmptyDomainUrlWith255MaxLength:
      type: string
      pattern: >-
        ^[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?)*\.[a-zA-Z]{2,}$|^https?:\/\/[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?)*(\.[a-zA-Z]{2,})?(:\d+)?(\/.*)?$
      maxLength: 255
      example: https://app.xyz.com
    SignMessageApprovalQuorumIntent:
      type: object
      additionalProperties: true
      description: >-
        The client-created signed Intent. The enclave checks its operation
        against the request's current signing context and MPC message.
      required:
        - intentId
        - businessAccountId
        - accountAddress
        - actionType
        - initiatorUserId
        - createdAt
        - operation
      properties:
        intentId:
          $ref: '#/components/schemas/uuid'
        businessAccountId:
          $ref: '#/components/schemas/uuid'
        accountAddress:
          $ref: '#/components/schemas/WalletPublicKey'
        actionType:
          type: string
          enum:
            - waasSigningQuorumApprove
        initiatorUserId:
          $ref: '#/components/schemas/uuid'
        createdAt:
          type: string
          description: Signed timestamp preserved as an ISO string.
        completeBy:
          type: string
          description: Signed deadline preserved as an ISO string.
        operation:
          $ref: '#/components/schemas/SignMessageApprovalQuorumIntentOperation'
        limits:
          $ref: '#/components/schemas/SignMessageApprovalQuorumIntentLimits'
        lifetime:
          $ref: '#/components/schemas/SignMessageApprovalQuorumIntentLifetime'
    BusinessAccountIntentSignature:
      type: string
      pattern: ^[0-9a-fA-F]{128}$
      description: >
        Hex-encoded ECDSA P-256 signature over the canonicalized payload,
        produced by the signer's session key — which never leaves their device,
        so consent cannot be given on their behalf.

        Exactly 128 hex characters. WebCrypto emits the raw r‖s form with both
        halves padded to 32 bytes, so unlike DER the length never varies.
        Constrained here so a malformed value is a 400 at the edge rather than
        an enclave round trip that returns INTENT_SIGNATURE_INVALID, and so an
        unbounded string cannot be persisted against a proposal.
    NonEmptyStringWith4096MaxLength:
      type: string
      maxLength: 4096
      description: A string with a max length of 4096 characters
    SignMessageUserOperationData:
      type: object
      description: The actual user operation data
      properties:
        authorization:
          $ref: '#/components/schemas/SignMessageAuthorizationSignature'
        callData:
          type: string
          description: The data to pass to the sender during the main execution call
        callGasLimit:
          type: string
          description: The amount of gas to allocate the main execution call
        factory:
          type: string
          description: Account factory address (optional, only for new accounts)
        factoryData:
          type: string
          description: Data for account factory (optional)
        maxFeePerGas:
          type: string
          description: Maximum fee per gas
        maxPriorityFeePerGas:
          type: string
          description: Maximum priority fee per gas
        nonce:
          type: string
          description: Anti-replay parameter
        paymaster:
          type: string
          description: Address of paymaster contract (optional)
        paymasterData:
          type: string
          description: Data for paymaster (optional)
        paymasterPostOpGasLimit:
          type: string
          description: >-
            The amount of gas to allocate for the paymaster post-operation code
            (optional)
        paymasterVerificationGasLimit:
          type: string
          description: >-
            The amount of gas to allocate for the paymaster validation code
            (optional)
        preVerificationGas:
          type: string
          description: Extra gas to pay the Bundler
        sender:
          type: string
          description: The account making the operation
        signature:
          type: string
          description: Data passed into the account to verify authorization
        verificationGasLimit:
          type: string
          description: The amount of gas to allocate for the verification step
    NonEmptyStringWith255MaxLength:
      type: string
      pattern: ^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'|]+(?<=\S)$
      maxLength: 255
      example: An example name
    Eip712Domain:
      type: object
      properties:
        name:
          description: Human-readable name of the signing domain
          type: string
        version:
          description: Version of the signing domain
          type: string
        chainId:
          description: Chain ID the typed data is intended for
          type: number
        verifyingContract:
          $ref: '#/components/schemas/WalletPublicKey'
    Eip712Types:
      type: object
      additionalProperties:
        type: array
        items:
          $ref: '#/components/schemas/Eip712TypeMember'
    WalletPublicKey:
      type: string
      pattern: ^[A-Za-z0-9_-]{18,100}$
      description: >-
        Valid blockchain wallet address, must be an alphanumeric string
        (underscores allowed for chains like Midnight, hyphens allowed for
        chains using base64url-encoded addresses like TON)
      example: '0xbF394748301603f18d953C90F0b087CBEC0E1834'
      maxLength: 255
    SignMessageApprovalQuorumIntentOperation:
      oneOf:
        - $ref: '#/components/schemas/SignMessageApprovalQuorumMessageOperation'
        - $ref: '#/components/schemas/SignMessageApprovalQuorumTypedDataOperation'
        - $ref: '#/components/schemas/SignMessageApprovalQuorumRawOperation'
        - $ref: '#/components/schemas/SignMessageApprovalQuorumEip7702AuthOperation'
        - $ref: '#/components/schemas/SignMessageApprovalQuorumTransactionOperation'
      discriminator:
        propertyName: kind
        mapping:
          message: '#/components/schemas/SignMessageApprovalQuorumMessageOperation'
          typedData: '#/components/schemas/SignMessageApprovalQuorumTypedDataOperation'
          raw: '#/components/schemas/SignMessageApprovalQuorumRawOperation'
          eip7702Auth: '#/components/schemas/SignMessageApprovalQuorumEip7702AuthOperation'
          transaction: '#/components/schemas/SignMessageApprovalQuorumTransactionOperation'
    SignMessageApprovalQuorumIntentLimits:
      type: object
      additionalProperties: true
      required:
        - maxGas
        - maxFeePerGas
        - maxPriorityFeePerGas
        - maxTotalFee
      properties:
        maxGas:
          type: string
        maxFeePerGas:
          type: string
        maxPriorityFeePerGas:
          type: string
        maxTotalFee:
          type: string
    SignMessageApprovalQuorumIntentLifetime:
      type: object
      additionalProperties: false
      description: >-
        Which field a signed transaction's validity window is tied to, and so
        how it can be refreshed before broadcast. Solana transaction Intents
        require `blockhash`. EVM transaction Intents omit it or use `nonce`.
        Other Intent kinds have none. Wallet-service enforces this.
      required:
        - refreshable
      properties:
        refreshable:
          type: string
          enum:
            - blockhash
            - nonce
    SignMessageAuthorizationSignature:
      type: object
      description: Authorization signature data (optional)
      properties:
        address:
          type: string
          description: Address that signed the authorization
        chainId:
          type: number
          description: Chain ID for the authorization signature
        nonce:
          type: number
          description: Nonce used in the authorization signature
        r:
          type: string
          description: R component of the ECDSA signature
        s:
          type: string
          description: S component of the ECDSA signature
        v:
          type: string
          description: V component of the ECDSA signature
        yParity:
          type: number
          description: Y parity of the signature (0 or 1)
    Eip712TypeMember:
      type: object
      required:
        - name
        - type
      properties:
        name:
          description: Name of the struct field
          type: string
        type:
          description: Solidity type of the struct field
          type: string
    SignMessageApprovalQuorumMessageOperation:
      type: object
      additionalProperties: true
      required:
        - kind
        - chainName
        - message
        - payload
      properties:
        kind:
          type: string
          pattern: ^message$
        chainName:
          type: string
        message:
          type: string
        payload:
          type: string
    SignMessageApprovalQuorumTypedDataOperation:
      type: object
      additionalProperties: true
      required:
        - kind
        - chainName
        - typedData
        - payload
      properties:
        kind:
          type: string
          pattern: ^typedData$
        chainName:
          type: string
          pattern: ^EVM$
        typedData:
          type: string
        payload:
          type: string
    SignMessageApprovalQuorumRawOperation:
      type: object
      additionalProperties: true
      required:
        - kind
        - chainName
        - rawSign
        - payload
      properties:
        kind:
          type: string
          pattern: ^raw$
        chainName:
          type: string
        rawSign:
          $ref: '#/components/schemas/SignMessageApprovalQuorumRawSign'
        payload:
          type: string
    SignMessageApprovalQuorumEip7702AuthOperation:
      type: object
      additionalProperties: true
      required:
        - kind
        - chainName
        - eip7702Auth
        - payload
      properties:
        kind:
          type: string
          pattern: ^eip7702Auth$
        chainName:
          type: string
          pattern: ^EVM$
        eip7702Auth:
          $ref: '#/components/schemas/SignMessageEip7702Auth'
        payload:
          type: string
    SignMessageApprovalQuorumTransactionOperation:
      oneOf:
        - $ref: >-
            #/components/schemas/SignMessageApprovalQuorumEvmTransactionOperation
        - $ref: >-
            #/components/schemas/SignMessageApprovalQuorumSvmTransactionOperation
      discriminator:
        propertyName: chainName
        mapping:
          EVM: >-
            #/components/schemas/SignMessageApprovalQuorumEvmTransactionOperation
          SVM: >-
            #/components/schemas/SignMessageApprovalQuorumSvmTransactionOperation
    SignMessageApprovalQuorumRawSign:
      type: object
      additionalProperties: true
      required:
        - payload
        - hashFunction
      properties:
        payload:
          type: string
        hashFunction:
          type: string
          enum:
            - sha512Half
            - keccak256
            - sha256
            - blake2b
        prefix:
          type: string
    SignMessageApprovalQuorumEvmTransactionOperation:
      type: object
      additionalProperties: true
      required:
        - kind
        - chainName
        - chainId
        - from
        - to
        - value
        - data
        - nonce
      properties:
        kind:
          type: string
          pattern: ^transaction$
        chainName:
          type: string
          pattern: ^EVM$
        chainId:
          type: string
        from:
          type: string
        to:
          type: string
          nullable: true
        value:
          type: string
        data:
          type: string
        nonce:
          type: string
    SignMessageApprovalQuorumSvmTransactionOperation:
      type: object
      additionalProperties: true
      required:
        - kind
        - chainName
        - chainId
        - messageVersion
        - feePayer
        - header
        - staticAccountKeys
        - instructions
      properties:
        kind:
          type: string
          pattern: ^transaction$
        chainName:
          type: string
          pattern: ^SVM$
        chainId:
          type: string
        messageVersion:
          type: string
          enum:
            - legacy
            - v0
        feePayer:
          type: string
        header:
          $ref: '#/components/schemas/SignMessageApprovalQuorumIntentOperationHeader'
        staticAccountKeys:
          type: array
          items:
            type: string
        instructions:
          type: array
          items:
            $ref: >-
              #/components/schemas/SignMessageApprovalQuorumIntentOperationInstructions
    SignMessageApprovalQuorumIntentOperationHeader:
      type: object
      additionalProperties: true
      required:
        - numRequiredSignatures
        - numReadonlySignedAccounts
        - numReadonlyUnsignedAccounts
      properties:
        numRequiredSignatures:
          type: integer
        numReadonlySignedAccounts:
          type: integer
        numReadonlyUnsignedAccounts:
          type: integer
    SignMessageApprovalQuorumIntentOperationInstructions:
      type: object
      additionalProperties: true
      required:
        - programIdIndex
        - accountKeyIndexes
        - data
      properties:
        programIdIndex:
          type: integer
        accountKeyIndexes:
          type: array
          items:
            type: integer
        data:
          type: string
  responses:
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BadRequest'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Unauthorized'
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Forbidden'
    NotFound:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NotFound'
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InternalServerError'

````

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