> ## 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.

# Sign a transaction with a WaaS wallet and send it

> Opens a signing room per attempt and returns the transaction record. Once signing finishes, Dynamic assembles the transaction and sends it; the signed transaction is never returned. Repeating the idempotency key with the same transaction returns the original record.



## OpenAPI

````yaml https://app.dynamic.xyz/api-docs/public-api.yaml post /sdk/{environmentId}/waas/{walletId}/transactions/signAndBroadcast
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-vendor 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:
  /sdk/{environmentId}/waas/{walletId}/transactions/signAndBroadcast:
    post:
      tags:
        - SDK
      summary: Sign a transaction with a WaaS wallet and send it
      description: >-
        Opens a signing room per attempt and returns the transaction record.
        Once signing finishes, Dynamic assembles the transaction and sends it;
        the signed transaction is never returned. Repeating the idempotency key
        with the same transaction returns the original record.
      operationId: signAndBroadcastWaasTransaction
      parameters:
        - $ref: '#/components/parameters/environmentId'
        - $ref: '#/components/parameters/walletId'
        - $ref: '#/components/parameters/sendIdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaasSignAndBroadcastRequest'
      responses:
        '200':
          description: >-
            The transaction record, with the signing rooms while signing is
            pending
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasTransactionSend'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: The idempotency key was already used for a different transaction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - bearerAuth: []
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
    sendIdempotencyKey:
      in: header
      name: x-idempotency-key
      required: true
      description: >-
        Your repeat-protection key for one transaction, unique per environment.
        Repeating it with the same transaction returns the original; with a
        different transaction, 409.
      schema:
        type: string
        minLength: 1
        maxLength: 255
        pattern: ^[-A-Za-z0-9._~!$&'()*+,;=:@/]{1,255}$
  schemas:
    WaasSignAndBroadcastRequest:
      type: object
      additionalProperties: false
      required:
        - transaction
      properties:
        transaction:
          $ref: '#/components/schemas/WaasSendTransaction'
        requestedCertainty:
          allOf:
            - $ref: '#/components/schemas/WaasRequestedCertainty'
          default: safe
        externalReference:
          type: string
          description: >-
            Your own label for this transaction, returned on every event. Not
            unique.
          minLength: 1
          maxLength: 256
          pattern: ^[\x20-\x7E]+$
        roomIds:
          type: array
          description: >-
            Signing rooms you already opened, one per attempt in fee order. When
            omitted, Dynamic opens them.
          minItems: 1
          maxItems: 3
          items:
            $ref: '#/components/schemas/WaasSendRoomId'
        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.
    WaasTransactionSend:
      type: object
      required:
        - transactionId
        - status
        - chainType
        - chainId
        - walletAddress
        - idempotencyKey
        - requestedAt
      properties:
        transactionId:
          allOf:
            - $ref: '#/components/schemas/uuid'
          description: Dynamic's id for this transaction, the same on every event.
        status:
          $ref: '#/components/schemas/WaasTransactionSendStatus'
        reason:
          $ref: '#/components/schemas/WaasTransactionSendReason'
        errorMessage:
          type: string
          maxLength: 512
          description: >-
            Human-readable detail on a `reverted` or `failed` transaction,
            written by Dynamic and never a raw provider or node error. For a log
            or a support ticket; branch on `reason` instead.
        revertReason:
          type: string
          maxLength: 512
          description: >-
            The contract's own error, when the transaction landed and reverted.
            Public chain output, passed through untouched and capped in length.
        chainType:
          type: string
          enum:
            - evm
            - svm
        chainId:
          type: string
          description: >-
            An EVM chain id, or a Solana network id (101 mainnet, 103 devnet,
            201 Eclipse).
        walletAddress:
          type: string
        idempotencyKey:
          type: string
          description: The key the transaction was requested with.
        externalReference:
          type: string
          description: Your own label, as sent.
        transactionHash:
          type: string
          description: The live attempt's hash, once it is signed.
        blockExplorerUrls:
          $ref: '#/components/schemas/WaasBlockExplorerUrls'
        attempts:
          type: array
          description: Every signed version of the transaction, cheapest first.
          items:
            $ref: '#/components/schemas/WaasTransactionSendAttempt'
        nonce:
          allOf:
            - $ref: '#/components/schemas/WaasHexQuantity'
          description: >-
            EVM only. The transaction's nonce, the only safe one to reuse when
            replacing it.
        replacementFee:
          allOf:
            - $ref: '#/components/schemas/WaasSendEvmFee'
          description: >-
            EVM only, while the transaction is not final. The lowest fee a
            replacement at the same nonce would need to displace the live
            attempt.
        rooms:
          type: array
          description: >-
            The signing rooms, one per attempt, while status is
            pending_signature.
          items:
            $ref: '#/components/schemas/OpenRoomResponse'
        progress:
          $ref: '#/components/schemas/WaasTransactionSendProgress'
        requestedAt:
          type: string
          format: date-time
        completedAt:
          type: string
          format: date-time
          description: Present when the status is terminal.
    UnprocessableEntity:
      type: object
      properties:
        error:
          description: Human-readable error message describing the validation failure
          type: string
          example: Resources already exists for this Object
        code:
          $ref: '#/components/schemas/UnprocessableEntityErrorCode'
        payload:
          $ref: '#/components/schemas/UnprocessableEntityErrorPayload'
      required:
        - error
    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
    WaasSendTransaction:
      type: object
      description: >-
        One transaction, for the wallet's chain. Both `evm` and `svm` together
        are rejected with `multiple_transactions`.
      additionalProperties: false
      minProperties: 1
      properties:
        evm:
          $ref: '#/components/schemas/WaasSendEvmTransaction'
        svm:
          $ref: '#/components/schemas/WaasSendSvmTransaction'
    WaasRequestedCertainty:
      type: string
      description: >-
        How sure to be before calling the transaction confirmed. `fast`, `safe`
        or `final`, or `chain:` followed by the chain's own value, such as
        `chain:12` or `chain:finalized`.
      maxLength: 64
      pattern: ^(fast|safe|final|chain:[a-z0-9]{1,58})$
    WaasSendRoomId:
      type: string
      description: MPC room identifier for one signing session
      maxLength: 255
      pattern: ^[A-Za-z0-9_-]+$
    WaasTransactionSendStatus:
      type: string
      description: >-
        Where the transaction has got to. `stalled` means nobody is pushing it
        any more and it can return to `confirming`. Tolerate values you do not
        recognise.
      enum:
        - pending_signature
        - signed
        - broadcasting
        - confirming
        - stalled
        - completed
        - reverted
        - failed
    WaasTransactionSendReason:
      type: string
      description: >-
        Why a transaction failed or stalled. Tolerate values you do not
        recognise.
      enum:
        - never_sent
        - rejected
        - expired
        - replaced
        - nonce_gap
        - ceremony_failed
        - assembly_failed
        - insufficient_funds
        - broadcaster_stopped
        - broadcaster_failed
    WaasBlockExplorerUrls:
      type: array
      items:
        type: string
        format: uri
        maxLength: 2048
    WaasTransactionSendAttempt:
      type: object
      description: One signed version of the transaction, at one fee.
      required:
        - live
      properties:
        transactionHash:
          type: string
          description: Present once this attempt is signed.
        fee:
          $ref: '#/components/schemas/WaasSendEvmFee'
        blockExplorerUrls:
          $ref: '#/components/schemas/WaasBlockExplorerUrls'
        live:
          type: boolean
          description: Whether this is the attempt currently sent. At most one is.
    WaasHexQuantity:
      type: string
      description: Unsigned integer as 0x-prefixed hex, without leading zeros.
      pattern: ^0x(0|[1-9a-fA-F][0-9a-fA-F]{0,63})$
    WaasSendEvmFee:
      type: object
      description: >-
        One fee. Either `gasPrice`, or `maxFeePerGas` with
        `maxPriorityFeePerGas`; both styles together are rejected with
        `ambiguous_fee_style`.
      additionalProperties: false
      properties:
        gasPrice:
          $ref: '#/components/schemas/WaasHexQuantity'
        maxFeePerGas:
          $ref: '#/components/schemas/WaasHexQuantity'
        maxPriorityFeePerGas:
          $ref: '#/components/schemas/WaasHexQuantity'
    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'
    WaasTransactionSendProgress:
      type: object
      required:
        - reached
        - required
        - elapsedSeconds
      properties:
        reached:
          type: integer
          minimum: 0
          description: How far towards the requested certainty the transaction has got.
        required:
          type: integer
          minimum: 1
          description: Where it counts as confirmed, on the same scale as `reached`.
        elapsedSeconds:
          type: integer
          minimum: 0
          description: Seconds since the transaction was requested.
        detail:
          $ref: '#/components/schemas/WaasTransactionSendProgressDetail'
    BadRequest:
      type: object
      properties:
        error:
          description: Human-readable error message
          type: string
    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
    NotFound:
      type: object
      required:
        - error
        - code
      properties:
        error:
          description: Human-readable error message
          type: string
          example: Not Found
        code:
          description: Machine-readable error code
          type: string
          example: not_found
    UnprocessableEntityErrorCode:
      type: string
      enum:
        - email_cannot_be_null
        - exchange_cannot_be_enabled
        - transfer_amount_too_small
        - transfer_address_not_whitelisted
        - invalid_scopes
        - unknown_transfer_error
        - transfer_mfa_required
        - transfer_mfa_failed
        - intent_required
        - invalid_transfer_funds
        - invalid_transfer_currency
        - invalid_exchange_provider
        - invalid_transfer_network
        - invalid_email
        - email_already_exists
        - allowlist_already_exists
        - allowlist_entry_already_exists
        - reassign_wallet_error
        - reassign_wallet_confirm
        - members_cannot_delete_themself
        - username_already_exists
        - wrong_email_verification_token
        - wrong_sms_verification_token
        - invalid_email_verification
        - invalid_sms_verification
        - invalid_verification
        - invalid_position
        - too_many_sms_verification_attempts
        - too_many_email_verification_attempts
        - too_many_verification_attempts
        - organization_name_already_exists
        - project_name_already_exists
        - wallet_not_deployed
        - email_verification_required
        - phone_verification_required
        - invite_address_required
        - provider_not_available
        - forbidden_unlink_request
        - invalid_unlink_request
        - too_many_api_tokens
        - lock_timeout
        - lock_too_many_attempts
        - nft_token_gating_not_supported_for_chain
        - empty_chain_name
        - no_enabled_email_provider
        - no_enabled_sms_provider
        - invalid_key_export_url
        - invalid_dynamic_props
        - too_many_requests
        - too_many_organizations_for_user
        - too_many_projects_for_organization
        - email_associated_with_different_provider
        - user_has_already_account_with_email
        - user_has_already_account_with_phone_number
        - other_verify_failure
        - email_tied_to_embedded_wallet
        - invalid_invite
        - social_account_already_exists
        - invalid_email_address
        - invalid_gate
        - conflicting_embedded_wallet_providers
        - invalid_user
        - invalid_cors_origins
        - invalid_mobile_deeplink_urls
        - unauthorized_mobile_deeplink_url
        - invalid_private_key_format
        - invalid_embedded_wallet_settings
        - wallet_not_support_passkey
        - recovery_email_unavailable_or_invalid
        - connect_error
        - invalid_wallet_name
        - invalid_wallet_address
        - email_recovery_disabled
        - no_compatible_wallet_service_enabled
        - missing_aa_project_id
        - linked_embedded_wallet
        - invalid_mpc_environment
        - invalid_regex
        - repeated_options
        - missing_phone_number_or_email
        - duplicate_exists
        - mfa_device_not_found
        - mfa_invalid_code
        - mfa_invalid_request
        - invalid_phone
        - gate_exists
        - invalid_embedded_wallet_chains_configuration
        - merge_accounts_confirmation
        - merge_accounts_invalid
        - invalid_wallet_id
        - unable_to_fetch_balances
        - cannot_switch_to_unique
        - custom_field_data_not_unique
        - metadata_size_exceeded
        - invalid_custom_hostname
        - blocked_user_cannot_transfer_wallet
        - feature_not_enabled_in_suborg
        - invalid_username
        - invalid_external_auth
        - invalid_chain_address_match
        - invalid_update
        - cannot_delete_last_project
        - no_hd_wallet_found
        - wallet_account_exists_for_chain
        - too_many_embedded_wallets_for_user
        - too_many_embedded_wallets_per_chain_for_user
        - invalid_session_public_key
        - custom_field_not_unique
        - invalid_aa_project_configuration
        - no_v1_embedded_wallet_found
        - embedded_wallet_address_already_linked
        - key_share_already_backed_up
        - invalid_key_shares_length
        - wallet_not_active
        - wallet_service_connection_error
        - no_global_wallet_found
        - invalid_metadata_value
        - max_passkeys_per_user
        - passkey_not_found
        - cannot_delete_passkey_linked_to_embedded_wallet
        - cannot_delete_last_sign_in_verified_credential
        - credential_not_enabled_for_sign_in
        - unsupported_chain
        - share_set_id_required
        - address_screening_byok_auth
        - address_screening_byok_quota
        - address_screening_byok_shape
        - address_screening_byok_upstream
        - captcha_settings_incomplete_key_pair
        - invalid_signed_transaction
        - signed_transaction_wallet_mismatch
        - unsupported_waas_chain
        - network_not_enabled
        - broadcast_rejected
        - broadcast_requires_resign
        - broadcast_outcome_unknown
        - broadcast_rate_limited
        - broadcast_idempotency_conflict
        - broadcast_wallet_ineligible
        - broadcast_not_submitted
        - chain_mismatch
        - network_disabled
        - missing_fee
        - missing_nonce
        - missing_gas_limit
        - ambiguous_fee_style
        - unsupported_shape
        - contract_creation_unsupported
        - multiple_transactions
        - durable_nonce_unsupported
        - missing_cosigner
        - blockhash_too_old
        - certainty_unreachable
        - send_idempotency_conflict
        - ambiguous_send_identifier
        - offline_recovery_cloud_backup_conflict
        - quote_expired
        - insufficient_balance
    UnprocessableEntityErrorPayload:
      type: object
      description: >-
        Contains information which the integrating client of this API can use to
        tailor an experience to a customer to fix the underlying issue that
        triggered this error.
      properties:
        email:
          description: Email address that caused the validation error
          type: string
          format: email
          example: joe@email.com
        loginProvider:
          $ref: '#/components/schemas/ProviderEnum'
        embeddedWalletName:
          description: Embedded wallet name that caused the validation error
          type: string
        embeddedSocialSigninProvider:
          $ref: '#/components/schemas/ProviderEnum'
        mergeConflicts:
          $ref: '#/components/schemas/MergeConflicts'
        intent:
          $ref: '#/components/schemas/BusinessAccountMutationIntent'
        additionalMessages:
          description: List of additional validation error messages
          type: array
          items:
            type: string
    TooManyRequests:
      type: object
      properties:
        error:
          description: Human-readable error message indicating rate limit exceeded
          type: string
          example: Too Many Requests
    InternalServerError:
      type: object
      properties:
        error:
          description: Human-readable error message
          type: string
          example: Internal Server Error
    WaasSendEvmTransaction:
      type: object
      description: >-
        A complete EVM transaction. The chain id comes from the wallet's
        network, never the request. A missing nonce, gas limit, fee or recipient
        is rejected with its own code.
      additionalProperties: false
      properties:
        to:
          type: string
          description: >-
            Recipient address. Required: without one the transaction is a
            contract deployment, which is rejected with
            `contract_creation_unsupported`.
          pattern: ^0x[0-9a-fA-F]{40}$
        value:
          allOf:
            - $ref: '#/components/schemas/WaasHexQuantity'
          description: Amount in wei. Defaults to 0x0.
        data:
          type: string
          description: Calldata as 0x-prefixed hex. Defaults to 0x.
          maxLength: 204800
          pattern: ^0x([0-9a-fA-F]{2})*$
        nonce:
          $ref: '#/components/schemas/WaasHexQuantity'
        gas:
          allOf:
            - $ref: '#/components/schemas/WaasHexQuantity'
          description: Gas limit
        fees:
          type: array
          description: >-
            The same transaction at one or more fees, cheapest first, all in one
            style. Each is signed as its own attempt; the cheapest is sent first
            and the next replaces it if it stalls.
          minItems: 1
          maxItems: 3
          items:
            $ref: '#/components/schemas/WaasSendEvmFee'
        maxFeePerBlobGas:
          allOf:
            - $ref: '#/components/schemas/WaasHexQuantity'
          description: Blob transactions are rejected with `unsupported_shape`.
        blobVersionedHashes:
          type: array
          description: Blob transactions are rejected with `unsupported_shape`.
          maxItems: 16
          items:
            type: string
            pattern: ^0x[0-9a-fA-F]{64}$
    WaasSendSvmTransaction:
      type: object
      additionalProperties: false
      required:
        - serializedTransactions
      properties:
        serializedTransactions:
          type: array
          description: Exactly one Solana transaction, base64-encoded.
          minItems: 1
          maxItems: 1
          items:
            type: string
            minLength: 1
            maxLength: 1644
            pattern: ^[A-Za-z0-9+/]+={0,2}$
        cosignerSignatures:
          type: array
          description: >-
            Signatures from the transaction's other required signers. Dynamic
            adds only the wallet's own; a missing one is rejected with
            `missing_cosigner`.
          maxItems: 16
          items:
            $ref: '#/components/schemas/WaasSendSvmCosignerSignature'
        skipPreflight:
          type: boolean
          description: Skip the network's pre-send simulation.
          default: false
    NonEmptyBase58StringWith100MaxLength:
      type: string
      pattern: ^[1-9A-HJ-NP-Za-km-z]+$
      maxLength: 100
      description: A base58 string with a max length of 100 characters
    WaasTransactionSendProgressDetail:
      type: object
      description: The same progress in the chain's own units.
      minProperties: 1
      maxProperties: 1
      properties:
        evm:
          $ref: '#/components/schemas/WaasTransactionSendEvmProgress'
        svm:
          $ref: '#/components/schemas/WaasTransactionSendSvmProgress'
    ProviderEnum:
      type: string
      description: >-
        The 'turnkey' value is deprecated and will be removed in a future
        version.
      enum:
        - emailOnly
        - magicLink
        - apple
        - bitbucket
        - coinbasesocial
        - discord
        - epicgames
        - facebook
        - farcaster
        - github
        - gitlab
        - google
        - instagram
        - linkedin
        - microsoft
        - twitch
        - twitter
        - blocto
        - banxa
        - coinbaseOnramp
        - cryptoDotCom
        - moonPay
        - dynamic
        - alchemy
        - zerodev
        - telegram
        - turnkey
        - coinbaseWaas
        - sms
        - spotify
        - tiktok
        - line
        - steam
        - shopify
        - zksync
        - kraken
        - blockaid
        - passkey
        - okta
        - sendgrid
        - resend
        - trmWalletScreening
        - chainalysisAddressScreening
        - gemini
    MergeConflicts:
      type: object
      description: >-
        Contains information needed for the SDK to surface merge conflicts when
        attempting to merge information from one user to another
      required:
        - fromUser
        - conflicts
      properties:
        fromUser:
          $ref: '#/components/schemas/SdkUser'
        conflicts:
          description: List of field-level merge conflicts between users
          type: array
          items:
            $ref: '#/components/schemas/MergeUserConflict'
    BusinessAccountMutationIntent:
      type: object
      description: >
        The initiator's proposal, signed with their session key. Built by the
        API, not the client — sign these exact bytes verbatim, because
        re-serializing can change them and invalidate the signature.

        `autoExecute` is inside the signed bytes, so an approver consents to it
        and nothing can flip it afterwards.
      additionalProperties: true
    WaasSendSvmCosignerSignature:
      type: object
      additionalProperties: false
      required:
        - publicKey
        - signature
      properties:
        publicKey:
          type: string
          description: The co-signer's public key, base58.
          pattern: ^[1-9A-HJ-NP-Za-km-z]{32,44}$
        signature:
          type: string
          description: The co-signer's signature over the transaction, base58.
          pattern: ^[1-9A-HJ-NP-Za-km-z]{64,88}$
    WaasTransactionSendEvmProgress:
      type: object
      required:
        - confirmations
      properties:
        confirmations:
          type: integer
          minimum: 0
          description: >-
            Blocks on top of the one holding the transaction, counting that
            block.
        requiredConfirmations:
          type: integer
          minimum: 1
          description: >-
            Confirmations needed. Absent when waiting for the chain's finalized
            block.
    WaasTransactionSendSvmProgress:
      type: object
      required:
        - commitment
        - requiredCommitment
      properties:
        commitment:
          $ref: '#/components/schemas/WaasSvmCommitment'
        requiredCommitment:
          $ref: '#/components/schemas/WaasSvmCommitment'
    SdkUser:
      allOf:
        - $ref: '#/components/schemas/BaseUser'
        - type: object
          required:
            - verifiedCredentials
    MergeUserConflict:
      type: object
      description: >-
        Contains a merge conflict between two users with different values for
        the same user field data
      required:
        - field
        - fromUser
        - currentUser
      properties:
        field:
          $ref: '#/components/schemas/ProjectSettingsKyc'
        fromUser:
          $ref: '#/components/schemas/MergeUser'
        currentUser:
          $ref: '#/components/schemas/MergeUser'
    WaasSvmCommitment:
      type: string
      description: A Solana commitment level.
      enum:
        - processed
        - confirmed
        - finalized
    BaseUser:
      type: object
      required:
        - id
        - projectEnvironmentId
      properties:
        id:
          $ref: '#/components/schemas/uuid'
        projectEnvironmentId:
          $ref: '#/components/schemas/uuid'
        verifiedCredentials:
          description: >-
            List of verified credentials (wallets, emails, social accounts)
            linked to the user
          type: array
          items:
            $ref: '#/components/schemas/JwtVerifiedCredential'
        lastVerifiedCredentialId:
          $ref: '#/components/schemas/LastVerifiedCredentialId'
        sessionId:
          $ref: '#/components/schemas/uuid'
        alias:
          $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength'
        country:
          $ref: '#/components/schemas/CountryCode'
        email:
          description: Primary email address of the user
          type: string
          format: email
          nullable: true
          maxLength: 255
        firstName:
          $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength'
        jobTitle:
          $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength'
        lastName:
          $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength'
        phoneNumber:
          description: Phone number of the user
          type: string
          nullable: true
          maxLength: 255
        policiesConsent:
          description: >-
            Whether the user has accepted the terms of service and privacy
            policy
          type: boolean
          nullable: true
        tShirtSize:
          $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength'
        team:
          $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength'
        username:
          $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength'
        firstVisit:
          description: ISO 8601 timestamp of when the user first visited
          type: string
          format: date-time
        lastVisit:
          description: ISO 8601 timestamp of when the user last visited
          type: string
          format: date-time
        newUser:
          description: Whether this is a newly created user
          type: boolean
        metadata:
          description: Arbitrary key-value metadata associated with the user
          type: object
        mfaBackupCodeAcknowledgement:
          $ref: '#/components/schemas/MfaBackupCodeAcknowledgement'
        btcWallet:
          description: Bitcoin wallet address of the user
          type: string
          nullable: true
        kdaWallet:
          description: Kadena wallet address of the user
          type: string
          nullable: true
        ltcWallet:
          description: Litecoin wallet address of the user
          type: string
          nullable: true
        ckbWallet:
          description: Nervos CKB wallet address of the user
          type: string
          nullable: true
        kasWallet:
          description: Kaspa wallet address of the user
          type: string
          nullable: true
        dogeWallet:
          description: Dogecoin wallet address of the user
          type: string
          nullable: true
        emailNotification:
          description: Whether the user has opted in to email notifications
          type: boolean
          nullable: true
        discordNotification:
          description: Whether the user has opted in to Discord notifications
          type: boolean
          nullable: true
        newsletterNotification:
          description: Whether the user has opted in to newsletter notifications
          type: boolean
          nullable: true
        lists:
          type: array
          description: >-
            Access lists evaluated by Dynamic when considering access for the
            user.
          items:
            type: string
        scope:
          type: string
          description: >-
            A whitespace-separate list of permissions associated with the JWT
            token issued. This conforms to the JWT standard for scope claims:
            https://datatracker.ietf.org/doc/html/rfc8693#section-4.2
          example: superuser marketing operations
        missingFields:
          description: List of required user fields that have not yet been provided
          type: array
          items:
            $ref: '#/components/schemas/ProjectSettingsKyc'
    ProjectSettingsKyc:
      type: object
      properties:
        name:
          description: Internal name identifier of the KYC field
          type: string
        required:
          description: Whether this KYC field is required for user onboarding
          type: boolean
        enabled:
          description: Whether this KYC field is enabled for collection
          type: boolean
        unique:
          description: Whether this KYC field value must be unique across all users
          type: boolean
        verify:
          description: Whether this KYC field requires verification
          type: boolean
        type:
          $ref: '#/components/schemas/KycFieldType'
        validationRules:
          $ref: '#/components/schemas/CustomFieldValidationRules'
        validationType:
          $ref: '#/components/schemas/CustomFieldType'
        label:
          description: Display label for the KYC field shown to users
          type: string
        position:
          description: Display position order of the KYC field in the form
          type: number
      required:
        - name
        - required
        - enabled
        - unique
        - verify
    MergeUser:
      type: object
      description: Contains the current field value for the user.
      required:
        - userId
        - value
      properties:
        userId:
          $ref: '#/components/schemas/uuid'
        value:
          $ref: '#/components/schemas/NonEmptyStringWith255MaxLength'
    JwtVerifiedCredential:
      type: object
      required:
        - id
        - format
        - signInEnabled
      properties:
        address:
          $ref: '#/components/schemas/WalletPublicKey'
        chain:
          description: Blockchain network for this credential
          type: string
        refId:
          $ref: '#/components/schemas/uuid'
        signerRefId:
          $ref: '#/components/schemas/uuid'
        email:
          description: Email address for email-based credentials
          type: string
          format: email
        id:
          $ref: '#/components/schemas/VerifiedCredentialId'
        name_service:
          $ref: '#/components/schemas/NameServiceData'
        public_identifier:
          description: >-
            This is used to publicly identify a verified credential in a
            human-friendly way. For example, this will be the email address if
            credential format=email.
          type: string
        wallet_name:
          description: Name of the wallet provider
          type: string
        wallet_provider:
          $ref: '#/components/schemas/WalletProviderEnum'
        wallet_properties:
          $ref: '#/components/schemas/WalletProperties'
        business_account_properties:
          $ref: '#/components/schemas/BusinessAccountProperties'
        format:
          $ref: '#/components/schemas/JwtVerifiedCredentialFormatEnum'
        oauth_provider:
          $ref: '#/components/schemas/ProviderEnum'
        oauth_username:
          description: Username from the OAuth provider
          type: string
        oauth_display_name:
          description: Display name from the OAuth provider
          type: string
          nullable: true
        oauth_account_id:
          description: Unique account identifier from the OAuth provider
          type: string
          nullable: true
        phoneNumber:
          description: >-
            This field contains the phone number in the country. This could also
            contain the area code within a country.
          example: '9171113333'
          type: string
        phoneCountryCode:
          description: >-
            This field contains the phone international country code. See
            https://countrycode.org/
          example: '1'
          type: string
        isoCountryCode:
          description: >-
            ISO-3166 two-character country code. See
            https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
          example: US
          type: string
        oauth_account_photos:
          description: List of profile photo URLs from the OAuth provider
          type: array
          items:
            type: string
        oauth_emails:
          description: List of email addresses from the OAuth provider
          type: array
          items:
            type: string
        oauth_metadata:
          type: object
          description: >-
            This object contains JSON metadata for a social-based verified
            credential. It may contain data about the user that does not fit
            into the other structured fields, and could include arbitrary fields
            about the user from the oauth provider's API.
        previous_users:
          description: >-
            This will only be provided in the responses for GET
            /users/{userId}.Previous user IDs that owned this verified
            credential and was tranfered to the current user ID.
          type: array
          items:
            $ref: '#/components/schemas/uuid'
        embedded_wallet_id:
          description: Identifier of the linked embedded wallet
          type: string
          nullable: true
        wallet_additional_addresses:
          description: List of additional addresses derived from this wallet
          type: array
          items:
            $ref: '#/components/schemas/WalletAdditionalAddress'
        lastSelectedAt:
          description: >-
            This timestamp indicates the last time this verified wallet was
            either connected to the user account or selected to become the
            primary wallet on the account.
          type: string
          format: date-time
        signInEnabled:
          type: boolean
          description: This indicates if the user can sign in with this credential
        verifiedAt:
          type: string
          format: date-time
          description: >-
            This timestamp indicates the last time this verified credential was
            verified.
    LastVerifiedCredentialId:
      description: >-
        ID of the most recently used verified credential. This would refer to a
        value in the verified credentials list
      type: string
      pattern: >-
        ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}(-zerodev)?$
      minLength: 36
      maxLength: 45
      example: 95b11417-f18f-457f-8804-68e361f9164f-zerodev
    OptionalNullableNonEmptyStringWith255MaxLength:
      type: string
      pattern: ^$|^(?=\S)[\p{L}\p{N} _.,:!?&%@\/+-]+(?<=\S)$
      example: An example name
      nullable: true
      maxLength: 255
    CountryCode:
      type: string
      nullable: true
      description: Standard ISO 3166-1 alpha-2 two-letter country code
      pattern: ^[A-Z]{2}$
      example: US
      maxLength: 255
    MfaBackupCodeAcknowledgement:
      type: string
      nullable: true
      enum:
        - pending
        - complete
    KycFieldType:
      type: string
      enum:
        - standard
        - custom
    CustomFieldValidationRules:
      type: object
      properties:
        unique:
          type: boolean
          description: If this field must be unique for every user in the environment
        regex:
          type: string
          maxLength: 255
          description: The regex pattern that the text field must match
          example: ^0x
        validOptions:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldValidValue'
          description: The dropdown options for the select field
          example:
            - label: small
            - label: medium
            - label: large
        checkboxText:
          type: string
          maxLength: 255
          description: The text that will be displayed for the checkbox field
          example: Agree to the terms and conditions
      description: Optional validation rules for the custom field
    CustomFieldType:
      type: string
      enum:
        - text
        - checkbox
        - select
    NonEmptyStringWith255MaxLength:
      type: string
      pattern: ^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'|]+(?<=\S)$
      maxLength: 255
      example: An example name
    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
    VerifiedCredentialId:
      description: >-
        UUID v4 with an optional -zerodev suffix for ZeroDev EIP-7702
        smart-wallet credentials
      type: string
      pattern: >-
        ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}(-zerodev)?$
      minLength: 36
      maxLength: 45
      example: 95b11417-f18f-457f-8804-68e361f9164f-zerodev
    NameServiceData:
      type: object
      properties:
        avatar:
          description: URL of the avatar associated with the name service record
          type: string
        name:
          description: Resolved name from the name service (e.g. ENS name)
          type: string
    WalletProviderEnum:
      type: string
      enum:
        - browserExtension
        - custodialService
        - walletConnect
        - qrCode
        - deepLink
        - embeddedWallet
        - smartContractWallet
    WalletProperties:
      anyOf:
        - $ref: '#/components/schemas/TurnkeyWalletProperties'
        - $ref: '#/components/schemas/HardwareWalletProperties'
        - $ref: '#/components/schemas/CoinbaseMpcWalletProperties'
        - $ref: '#/components/schemas/SmartWalletProperties'
        - $ref: '#/components/schemas/WaasWalletProperties'
    BusinessAccountProperties:
      type: object
      description: >
        Business-account context attached to a verified credential that belongs
        to a business account. Present whenever `wallet_properties.shareSetType`
        is `businessAccountUser`; absent otherwise. Each field is namespaced by
        its source table so a caller reading the response sees exactly which
        entity the value came from (no ambiguity between member role and signer
        type, between business-account name and signer-derived names, etc.).
      required:
        - businessAccountId
        - businessAccountCreatedAt
        - businessAccountSignerId
        - businessAccountSignerType
        - businessAccountMemberRole
      properties:
        businessAccountId:
          $ref: '#/components/schemas/uuid'
        businessAccountName:
          type: string
          nullable: true
          description: Display name; user-supplied at create time. Nullable.
        businessAccountExternalRef:
          type: string
          nullable: true
          description: Developer-supplied stable ID inside the env. Nullable.
        businessAccountCreatedAt:
          type: string
          format: date-time
        businessAccountSignerId:
          $ref: '#/components/schemas/uuid'
        businessAccountSignerType:
          $ref: '#/components/schemas/BusinessAccountSignerType'
        businessAccountMemberRole:
          $ref: '#/components/schemas/HeldBusinessAccountMemberRole'
    JwtVerifiedCredentialFormatEnum:
      type: string
      enum:
        - blockchain
        - email
        - oauth
        - passkey
        - phoneNumber
        - externalUser
        - totp
    WalletAdditionalAddress:
      type: object
      description: An additional address associated with a wallet.
      required:
        - address
        - type
      properties:
        address:
          type: string
          description: An address associated with a wallet.
        publicKey:
          type: string
          description: The public key associated with the address.
        type:
          $ref: '#/components/schemas/WalletAddressType'
        network:
          type: string
          description: >-
            Network this address is encoded for (e.g. 'mainnet' | 'testnet' |
            'preview'). Present when a wallet exposes an address per network.
    CustomFieldValidValue:
      type: object
      required:
        - label
      properties:
        label:
          $ref: '#/components/schemas/NonEmptyStringWith255MaxLengthAndSpecialChars'
        key:
          $ref: '#/components/schemas/NonEmptyStringWith255MaxLengthAndSpecialChars'
    TurnkeyWalletProperties:
      deprecated: true
      type: object
      properties:
        turnkeySubOrganizationId:
          allOf:
            - $ref: '#/components/schemas/uuid'
          deprecated: true
        turnkeyPrivateKeyId:
          allOf:
            - $ref: '#/components/schemas/uuid'
          deprecated: true
        turnkeyHDWalletId:
          allOf:
            - $ref: '#/components/schemas/uuid'
          deprecated: true
        isAuthenticatorAttached:
          type: boolean
          description: >-
            Whether or not the wallet has an authenticator (passkey, api key,
            etc) attached to it.
        turnkeyUserId:
          allOf:
            - $ref: '#/components/schemas/uuid'
          deprecated: true
        isSessionKeyCompatible:
          description: Whether this wallet supports session key operations
          type: boolean
        version:
          $ref: '#/components/schemas/EmbeddedWalletVersionEnum'
        ecdsaProviderType:
          $ref: '#/components/schemas/ecdsaValidatorOptions'
        entryPointVersion:
          $ref: '#/components/schemas/ProviderEntryPointVersionEnum'
        kernelVersion:
          $ref: '#/components/schemas/ProviderKernelVersionEnum'
    HardwareWalletProperties:
      type: object
      properties:
        hardwareWallet:
          $ref: '#/components/schemas/HardwareWalletEnum'
    CoinbaseMpcWalletProperties:
      deprecated: true
      type: object
      properties:
        claimed:
          type: boolean
          description: Dynamic pregenerated this wallet and stored the passcode
        source:
          $ref: '#/components/schemas/PasswordSourceTypeEnum'
    SmartWalletProperties:
      type: object
      properties:
        entryPointVersion:
          $ref: '#/components/schemas/ProviderEntryPointVersionEnum'
        kernelVersion:
          $ref: '#/components/schemas/ProviderKernelVersionEnum'
        ecdsaProviderType:
          $ref: '#/components/schemas/ecdsaValidatorOptions'
    WaasWalletProperties:
      type: object
      properties:
        keyShares:
          description: >-
            List of key share information for the primary share set (the one
            this auth principal signs with).
          type: array
          items:
            $ref: '#/components/schemas/WalletKeyShareInfo'
        thresholdSignatureScheme:
          $ref: '#/components/schemas/ThresholdSignatureScheme'
        derivationPath:
          type: string
          description: The derivation path for the wallet
        settings:
          $ref: '#/components/schemas/WaasWalletSettings'
        shareSetId:
          type: string
          format: uuid
          description: >-
            Identifier of the primary share set (the one whose `keyShares`,
            `thresholdSignatureScheme`, `derivationPath`, and `settings` are
            inlined at the top level). Browser context: rootUser.
            Delegated-server context: delegated.
        shareSetType:
          $ref: '#/components/schemas/WaasWalletShareSetType'
        businessAccountId:
          type: string
          format: uuid
          description: >-
            Identifier of the business account that owns this wallet, when it is
            a business-account wallet; absent for personal wallets.
        otherShareSets:
          type: array
          description: >-
            All other active share sets that exist on this wallet (i.e., owned
            by other auth principals). Returned for awareness so consumers can
            see, e.g., that a delegated share set is set up alongside their
            rootUser. Server-typed share sets are never exposed.
          items:
            $ref: '#/components/schemas/WaasShareSet'
        version:
          $ref: '#/components/schemas/EmbeddedWalletVersionEnum'
    BusinessAccountSignerType:
      type: string
      description: Type of a business account signer
      enum:
        - endUser
        - server
    HeldBusinessAccountMemberRole:
      type: string
      description: >
        The role a member actually holds: a built-in (`owner`, `admin`,
        `viewer`) or a customer-defined role the account has defined. Wider than
        AssignableBusinessAccountRoleName because a held role can be `owner`,
        which cannot be assigned directly.
      pattern: ^[a-z0-9](?:[a-z0-9_-]{0,30}[a-z0-9])?$
      example: cfo
    WalletAddressType:
      type: string
      enum:
        - ordinals
        - payment
        - cosmos
        - evm
        - stellar
        - ton
        - midnight_unshielded
        - midnight_dust
        - midnight_shielded
    NonEmptyStringWith255MaxLengthAndSpecialChars:
      type: string
      pattern: ^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'()\[\]*]+(?<=\S)$
      maxLength: 255
      example: An example name
    EmbeddedWalletVersionEnum:
      type: string
      enum:
        - V1
        - V2
        - V3
    ecdsaValidatorOptions:
      type: string
      enum:
        - zerodev_signer_to_ecdsa
        - zerodev_multi_chain
    ProviderEntryPointVersionEnum:
      type: string
      enum:
        - v6
        - v7
    ProviderKernelVersionEnum:
      type: string
      enum:
        - v2_4
        - v3_0
        - v3_1
        - v3_2
        - v3_3
    HardwareWalletEnum:
      type: string
      enum:
        - ledger
    PasswordSourceTypeEnum:
      type: string
      enum:
        - dynamic
        - user
    WalletKeyShareInfo:
      type: object
      required:
        - id
        - backupLocation
        - passwordEncrypted
      properties:
        id:
          $ref: '#/components/schemas/uuid'
        backupLocation:
          description: >-
            Where this key share is stored (e.g. "user", "dynamic",
            "googleDrive", "iCloud")
          type: string
        passwordEncrypted:
          description: >-
            Whether this key share is additionally encrypted with a
            user-provided password
          type: boolean
        walletShareDeveloperKeyEncrypted:
          description: >-
            Whether this key share is encrypted with the developer's encryption
            public key
          type: boolean
        externalKeyShareId:
          $ref: '#/components/schemas/uuid'
        keygenId:
          description: Identifier of the key generation ceremony that produced this share
          type: string
    ThresholdSignatureScheme:
      type: string
      enum:
        - TWO_OF_TWO
        - TWO_OF_THREE
        - THREE_OF_FIVE
    WaasWalletSettings:
      type: object
      properties:
        hasDeniedDelegatedAccess:
          description: Whether the user has denied delegated access for this wallet
          type: boolean
        shouldRefreshOnNextSignOn:
          description: Whether to refresh wallet key shares on the user's next sign-on
          type: boolean
        reshareOnNextSignOn:
          $ref: '#/components/schemas/ThresholdSignatureScheme'
        revokeOnNextSignOn:
          description: Whether to revoke delegated access on the user's next sign-on
          type: boolean
        variant:
          $ref: '#/components/schemas/Ed25519Variant'
    WaasWalletShareSetType:
      type: string
      enum:
        - delegated
        - rootUser
        - server
        - businessAccountUser
        - offlineRecovery
      description: The role this share set plays for the wallet
    WaasShareSet:
      type: object
      required:
        - shareSetId
        - shareSetType
        - thresholdSignatureScheme
        - createdAt
      properties:
        shareSetId:
          type: string
          format: uuid
          description: Identifier of the share set (WaasWallets row id).
        shareSetType:
          $ref: '#/components/schemas/WaasWalletShareSetType'
        thresholdSignatureScheme:
          $ref: '#/components/schemas/ThresholdSignatureScheme'
        createdAt:
          type: string
          format: date-time
          description: Timestamp when this share set was created.
    Ed25519Variant:
      type: string
      description: >-
        Protocol variant for the wallet. `ed25519Standard` = non-exportable
        Ed25519, used for raw-scalar import where the 32-byte input is the
        signing scalar itself (not an RFC-8032 seed).
        Omitted/`ed25519Exportable` = the default seed-based Ed25519. Only
        meaningful for ed25519 chains (e.g. Solana).
      enum:
        - ed25519Exportable
        - ed25519Standard
  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'
    UnprocessableEntity:
      description: Unprocessable Entity
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UnprocessableEntity'
    TooManyRequests:
      description: Too Many Requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TooManyRequests'
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InternalServerError'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````