Dynamic Wallets API

The Wallets API from Dynamic — 9 operation(s) for wallets.

OpenAPI Specification

dynamic-xyz-wallets-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Dashboard Allowlists Wallets 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
tags:
- name: Wallets
paths:
  /environments/{environmentId}/embeddedWallets:
    post:
      operationId: createEmbeddedWallet
      description: Creates a new embedded wallet for a user given an email or userId. If an email is provided and it is not associated with an existing user this call will also create a new user.
      summary: Creates a new embedded wallet for a user given an identifier
      tags:
      - Wallets
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        description: Pregenerate embedded wallet for a user email request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserEmbeddedWalletsRequest'
        required: true
      responses:
        '200':
          description: Wallet already exists for the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
        '201':
          description: Successfully created new wallet for the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /environments/{environmentId}/embeddedWalletVersions:
    get:
      operationId: getActiveEmbeddedWalletVersionsForEnvironment
      tags:
      - Wallets
      summary: Get the active embedded wallet versions for an environment
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: Active embedded wallet versions
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/EmbeddedWalletVersionEnum'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /environments/{environmentId}/embeddedWallets/farcaster:
    post:
      operationId: createEmbeddedWalletFromFarcaster
      description: Creates a new embedded wallet. This API is meant to be called from a frame server.
      summary: Creates a new embedded wallet. This API is meant to be called from a frame server.
      tags:
      - Wallets
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        description: Pregenerate embedded wallet for frame server request
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserEmbeddedWalletsFromFarcasterRequest'
        required: true
      responses:
        '200':
          description: Wallet(s) already exists for the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
        '201':
          description: Successfully created new wallet(s) for the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /users/{userId}/wallets:
    post:
      deprecated: true
      operationId: createWalletLegacy
      summary: Creates a new wallet for the user (deprecated - use /environments/{environmentId}/users/{userId}/wallets instead)
      description: Creates a new wallet for the user. Note that this API is not meant for creating embedded wallets. To create embedded wallets use the /embeddedWallets endpoint.
      tags:
      - Wallets
      parameters:
      - $ref: '#/components/parameters/userId'
      requestBody:
        description: Wallet fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWalletRequest'
        required: true
      responses:
        '201':
          description: Successfully created new wallet for the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Wallet'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
    get:
      deprecated: true
      operationId: getWalletsByUserIdLegacy
      tags:
      - Wallets
      summary: Get wallets by user (deprecated - use /environments/{environmentId}/users/{userId}/wallets instead)
      parameters:
      - $ref: '#/components/parameters/userId'
      responses:
        '200':
          description: Successful response with list of wallets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserWalletsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Not found
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /environments/{environmentId}/users/{userId}/wallets:
    post:
      operationId: createWallet
      summary: Creates a new wallet for the user. Note that if the user already has an embedded wallet linked, this call will fail.
      description: Creates a new wallet for the user. Note that this API is not meant for creating embedded wallets. To create embedded wallets use the /embeddedWallets endpoint.
      tags:
      - Wallets
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/userId'
      requestBody:
        description: Wallet fields
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWalletRequest'
        required: true
      responses:
        '201':
          description: Successfully created new wallet for the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Wallet'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
    get:
      operationId: getWalletsByUserId
      tags:
      - Wallets
      summary: Get wallets by user
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/userId'
      responses:
        '200':
          description: Successful response with list of wallets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserWalletsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Not found
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /wallets/{walletId}:
    get:
      deprecated: true
      operationId: getWalletByIdLegacy
      tags:
      - Wallets
      summary: Get a wallet using the ID (deprecated - use /environments/{environmentId}/wallets/{walletId} instead)
      parameters:
      - $ref: '#/components/parameters/walletId'
      responses:
        '200':
          description: Successful response with wallet
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Wallet'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Not found
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
    delete:
      deprecated: true
      operationId: deleteWalletByIdLegacy
      tags:
      - Wallets
      summary: Delete wallet (deprecated - use /environments/{environmentId}/wallets/{walletId} instead)
      parameters:
      - $ref: '#/components/parameters/walletId'
      responses:
        '204':
          description: successful operation
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /environments/{environmentId}/wallets:
    get:
      operationId: getWalletsByEnvironmentId
      tags:
      - Wallets
      summary: Get wallets by environment
      description: Retrieve wallets for a specified environment
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - in: query
        name: limit
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
        description: Maximum number of wallets to return
      - in: query
        name: offset
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
        description: Number of wallets to skip
      responses:
        '200':
          description: Successful response with wallets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletsResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /environments/{environmentId}/wallets/{walletId}:
    get:
      operationId: getWalletById
      tags:
      - Wallets
      summary: Get a wallet using the ID
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/walletId'
      responses:
        '200':
          description: Successful response with wallet
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Wallet'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Not found
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
    delete:
      operationId: deleteWalletById
      tags:
      - Wallets
      summary: Delete wallet
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/walletId'
      responses:
        '204':
          description: successful operation
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /environments/{environmentId}/wallets/recover:
    post:
      operationId: recoverDeletedWalletsWithEnvironment
      tags:
      - Wallets
      summary: Recover deleted wallets for a user in a specific environment
      description: Recovers deleted wallets for a user in a specified environment by setting deleted_at to null. This undoes the soft deletion of wallets, wallet additional addresses, and turnkey HD wallets.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WalletRecoveryRequest'
      responses:
        '200':
          description: Successfully recovered wallets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletRecoveryResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
components:
  schemas:
    UnprocessableEntity:
      type: object
      properties:
        error:
          type: string
          example: Resources already exists for this Object
        code:
          $ref: '#/components/schemas/UnprocessableEntityErrorCode'
        payload:
          $ref: '#/components/schemas/UnprocessableEntityErrorPayload'
      required:
      - error
    ProjectSettingsKyc:
      type: object
      properties:
        name:
          type: string
        required:
          type: boolean
        enabled:
          type: boolean
        unique:
          type: boolean
        verify:
          type: boolean
        type:
          $ref: '#/components/schemas/KycFieldType'
        validationRules:
          $ref: '#/components/schemas/CustomFieldValidationRules'
        validationType:
          $ref: '#/components/schemas/CustomFieldType'
        label:
          type: string
        position:
          type: number
      required:
      - name
      - required
      - enabled
      - unique
      - verify
    ThresholdSignatureScheme:
      type: string
      enum:
      - TWO_OF_TWO
      - TWO_OF_THREE
      - THREE_OF_FIVE
    OptionalNullableNonEmptyStringWith255MaxLength:
      type: string
      pattern: ^$|^(?=\S)[\p{L}\p{N} _.,:!?&%@\/+-]+(?<=\S)$
      example: An example name
      nullable: true
      maxLength: 255
    UserWalletsResponse:
      type: object
      properties:
        count:
          type: integer
        wallets:
          type: array
          items:
            $ref: '#/components/schemas/Wallet'
      required:
      - count
      - wallets
    ChainalysisCheck:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/uuid'
        createdAt:
          type: string
          format: date-time
        result:
          $ref: '#/components/schemas/ChainalysisCheckResultEnum'
        walletPublicKey:
          $ref: '#/components/schemas/WalletPublicKey'
        response:
          type: string
      required:
      - id
      - createdAt
      - result
      - walletPublicKey
      - response
    CreateUserEmbeddedWalletsFromFarcasterRequest:
      required:
      - email
      - fid
      - chains
      type: object
      properties:
        email:
          type: string
          format: email
          description: Identifier for the user. Must be an email
        fid:
          type: number
          description: Farcaster ID of the user
        chains:
          type: array
          description: The chains to create the wallets for
          items:
            $ref: '#/components/schemas/EmbeddedWalletChainEnum'
    WaasWalletSettings:
      type: object
      properties:
        hasDeniedDelegatedAccess:
          type: boolean
        shouldRefreshOnNextSignOn:
          type: boolean
        reshareOnNextSignOn:
          $ref: '#/components/schemas/ThresholdSignatureScheme'
        revokeOnNextSignOn:
          type: boolean
    NonEmptyIsoCountryCode:
      type: string
      pattern: ^[a-zA-Z]{2,4}\d?$
      maxLength: 4
      example: US
    WalletRecoveryResponse:
      type: object
      properties:
        data:
          type: object
          description: Recovered wallets data
        message:
          type: string
          description: Summary of wallet recovery
    CreateUserEmbeddedWalletsRequest:
      required:
      - identifier
      - type
      type: object
      properties:
        identifier:
          type: string
          description: Identifier for the user. Must be either an email, phone number, user id, external user id, or username from a supported social provider
        type:
          $ref: '#/components/schemas/UserIdentifierTypeEnum'
        chains:
          type: array
          description: The chains to create the wallet for
          items:
            $ref: '#/components/schemas/EmbeddedWalletChainEnum'
        chain:
          $ref: '#/components/schemas/EmbeddedWalletChainEnum'
        smsCountryCode:
          $ref: '#/components/schemas/SmsCountryCode'
        socialProvider:
          $ref: '#/components/schemas/ProviderEnum'
    WalletKeyShareInfo:
      type: object
      required:
      - id
      - backupLocation
      - passwordEncrypted
      properties:
        id:
          $ref: '#/components/schemas/uuid'
        backupLocation:
          type: string
        passwordEncrypted:
          type: boolean
        externalKeyShareId:
          $ref: '#/components/schemas/uuid'
    User:
      allOf:
      - $ref: '#/components/schemas/BaseUser'
      - type: object
        properties:
          walletPublicKey:
            type: string
          wallet:
            type: string
          chain:
            $ref: '#/components/schemas/ChainEnum'
          createdAt:
            type: string
            format: date-time
          updatedAt:
            type: string
            format: date-time
          sessions:
            type: array
            items:
              $ref: '#/components/schemas/Session'
          wallets:
            type: array
            items:
              $ref: '#/components/schemas/Wallet'
          chainalysisChecks:
            type: array
            items:
              $ref: '#/components/schemas/ChainalysisCheck'
          oauthAccounts:
            type: array
            items:
              $ref: '#/components/schemas/oAuthAccount'
          mfaDevices:
            type: array
            items:
              $ref: '#/components/schemas/MFADevice'
    ecdsaValidatorOptions:
      type: string
      enum:
      - zerodev_signer_to_ecdsa
      - zerodev_multi_chain
    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:
          type: string
          format: email
          example: joe@email.com
        loginProvider:
          $ref: '#/components/schemas/ProviderEnum'
        embeddedWalletName:
          type: string
        embeddedSocialSigninProvider:
          $ref: '#/components/schemas/ProviderEnum'
        mergeConflicts:
          $ref: '#/components/schemas/MergeConflicts'
        additionalMessages:
          type: array
          items:
            type: string
    JwtVerifiedCredentialFormatEnum:
      type: string
      enum:
      - blockchain
      - email
      - oauth
      - passkey
      - phoneNumber
      - externalUser
    WalletsResponse:
      type: object
      required:
      - wallets
      - count
      properties:
        wallets:
          type: array
          items:
            $ref: '#/components/schemas/WalletDetail'
        count:
          type: integer
          description: Total number of wallets matching the filter
        limit:
          type: integer
          description: Maximum number of wallets returned
        offset:
          type: integer
          description: Number of wallets skipped
    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'
    UserResponse:
      type: object
      properties:
        user:
          $ref: '#/components/schemas/User'
    InternalServerError:
      type: object
      properties:
        error:
          type: string
          example: Internal Server Error
    oAuthAccount:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/uuid'
        provider:
          $ref: '#/components/schemas/ProviderEnum'
        accountUsername:
          type: string
    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
      - dynamic
      - alchemy
      - zerodev
      - telegram
      - turnkey
      - coinbaseWaas
      - sms
      - spotify
      - tiktok
      - line
      - steam
      - shopify
      - zksync
      - kraken
      - blockaid
      - passkey
      - okta
      - sendgrid
      - resend
    MfaBackupCodeAcknowledgement:
      type: string
      nullable: true
      enum:
      - pending
      - complete
    KycFieldType:
      type: string
      enum:
      - standard
      - custom
    NameServiceData:
      type: object
      properties:
        avatar:
          type: string
        name:
          type: string
    EmbeddedWalletChainEnum:
      type: string
      enum:
      - EVM
      - SOL
      - SUI
      - BTC
      - TON
    WaasChainEnum:
      type: string
      enum:
      - EVM
      - SVM
      - SUI
      - BTC
      - TON
    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:
          type: array
          items:
            $ref: '#/components/schemas/MergeUserConflict'
    WalletProperties:
      anyOf:
      - $ref: '#/components/schemas/TurnkeyWalletProperties'
      - $ref: '#/components/schemas/HardwareWalletProperties'
      - $ref: '#/components/schemas/CoinbaseMpcWalletProperties'
      - $ref: '#/components/schemas/SmartWalletProperties'
      - $ref: '#/components/schemas/WaasWalletProperties'
    MFADevice:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/MFADeviceType'
        verified:
          type: boolean
          description: Whether or not the user has a verified this MFA Device
        id:
          $ref: '#/components/schemas/uuid'
        createdAt:
          type: string
          format: date-time
          description: The date and time the MFA device was created
        verifiedAt:
          type: string
          format: date-time
          description: The date and time the MFA device was verified
          nullable: true
        default:
          type: boolean
          description: Whether or not this is the default MFA device for the user
        alias:
          type: string
          description: The optional alias for the MFA device
    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
    CountryCode:
      type: string
      nullable: true
      description: Standard ISO 3166-1 alpha-2 two-letter country code
      pattern: ^[A-Z]{2}$
      example: US
      maxLength: 255
    CoinbaseMpcWalletProperties:
      type: object
      properties:
        claimed:
          type: boolean
          description: Dynamic pregenerated this wallet and stored the passcode
        source:
          $ref: '#/components/schemas/PasswordSourceTypeEnum'
    CreateWalletRequest:
      required:
      - publicWalletAddress
      - chain
      - walletName
      - walletProvider
      type: object
      properties:
        publicWalletAddress:
          $ref: '#/components/schemas/WalletPublicKey'
        chain:
          $ref: '#/components/schemas/ChainEnum'
        walletName:
          $ref: '#/components/schemas/NonEmptyStringWith255MaxLength'
        walletProvider:
          $ref: '#/components/schemas/WalletProviderEnum'
        additionalWalletAddresses:
          type: array
          items:
            $ref: '#/components/schemas/WalletAdditionalAddress'
    WalletRecoveryRequest:
      type: object
      properties:
        userId:
          type: string
          description: User Id
    Unauthorized:
      type: object
      properties:
        error:
          type: string
          example: No jwt provided!
    SmartWalletProperties:
      type: object
      properties:
        entryPointVersion:
          $ref: '#/components/schemas/ProviderEntryPointVersionEnum'
        kernelVersion:
          $ref: '#/components/schemas/ProviderKernelVersionEnum'
        ecdsaProviderType:
          $ref: '#/components/schemas/ecdsaValidatorOptions'
    ChainEnum:
      type: string
      enum:
      - ETH
      - EVM
      - FLOW
      - SOL
      - ALGO
      - STARK
      - COSMOS
      - BTC
      - ECLIPSE
      - SUI
      - SPARK
      - TRON
      - APTOS
      - TON
      - STELLAR
    DelegatedAccessEncryptionPublicKey:
      type: object
      required:
      - id
      - projectEnvironmentId
      - kid
      - alg
      - publicKeyPemB64
      - status
      - type
      - createdAt
      - updatedAt
      properties:
        id:
          $ref: '#/components/schemas/uuid'
        projectEnvironmentId:
          $ref: '#/components/schemas/uuid'
        kid:
          type: string
          description: Short identifier referenced in webhook envelopes so the developer knows which private key to use
          maxLength: 64
        alg:
          type: string
          enum:
          - RSA-OAEP-256
          - HYBRID-RSA-AES-256
          description: Algorithm for how this key is used
        publicKeyPemB64:
          type: string
          description: Developer's public key material, PEM encoded then base64'd
          maxLength: 4096
        status:
          type: string
          enum:
          - pending
          - active
          - revoked
          description: Lifecycle status of this key
        type:
          $ref: '#/components/schemas/WaasDelegatedAccessEncryptionPublicKeyType'
        expiresAt:
          type: string
          format: date-time
          nullable: true
          description: Optional expiry for planned rotations
        revokedAt:
          type: string
          format: date-time
          nullable: true
          description: Timestamp when the key was revoked
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    PasswordSourceTypeEnum:
      type: string
      enum:
      - dynamic
      - user
    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'
    HardwareWalletEnum:
      type: string
      enum:
      - ledger
    SdkUser:
      allOf:
      - $ref: '#/components/schemas/BaseUser'
      - type: object
        required:
        - verifiedCredentials
    MFADeviceType:
      type: string
      enum:
      - totp
      - passkey
      - email
    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:
          type: boolean
        version:
          $ref: '#/components/schemas/EmbeddedWalletVersionEnum'
        ecdsaProviderType:
          $ref: '#/components/schemas/ecdsaValidatorOptions'
        entryPointVersion:
          $ref: '#/components/schemas/ProviderEntryPointVersionEnum'
        kernelVersion:
          $ref: '#/components/schemas/ProviderKernelVersionEnum'
    Forbidden:
      type: object
      properties:
        error:
          type: string
          example: Access Forbidden
    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'
    Session:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/uuid'
        createdAt:
          type: string
          format: date-time
        ipAddress:
          type: string
          nullable: true
        userAgent:
          type: string
          nullable: true
        revokedAt:
          type: string
          format: date-time
          nullable: true
    WaasWalletProperties:
      type: object
      properties:
        keyShares:
          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'
        version:
          $ref: '#/components/schemas/EmbeddedWalletVersionEnum'
    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
      - 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
      - in

# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dynamic-xyz/refs/heads/main/openapi/dynamic-xyz-wallets-api-openapi.yml