Dynamic Waas API

The Waas API from Dynamic — 14 operation(s) for waas.

Operations 21

POST /environments/{environmentId}/waas/create Create a new WAAS for a user given an identifier #
POST /environments/{environmentId}/waas/authenticate Authenticate for WAAS using api key #
POST /environments/{environmentId}/waas/verifyApiKey Verify if an API key is valid for a specific environment #
POST /environments/{environmentId}/waas/{walletId}/delegatedAccess/signMessage Sign a message with a delegated waas account #
DELETE /environments/{environmentId}/waas/{walletId}/delegatedAccess Revoke delegated access for a single wallet #
POST /environments/{environmentId}/waas/delegatedAccess/revoke Revoke delegated access for one or more wallets #
GET /environments/{environmentId}/waas/delegatedAccess/encryptionPublicKeys Get delegated access encryption public keys for an environment #
POST /environments/{environmentId}/waas/delegatedAccess/encryptionPublicKeys Create credentials for waas wallet delegation #
GET /environments/{environmentId}/waas/delegatedAccess/encryptionPublicKeys/{keyId} Get a specific delegated access encryption public key by ID #
GET /environments/{environmentId}/waas/{walletId} Get a specific WAAS wallet by walletId #
POST /environments/{environmentId}/waas/{walletId}/keyShares/backup/locations Create backup action for key shares using API token authentication #
POST /environments/{environmentId}/waas/policies Create a new WAAS policy for an environment or add new rules to an existing policy #
GET /environments/{environmentId}/waas/policies Get the WAAS policy for an environment #
PUT /environments/{environmentId}/waas/policies Update the WAAS policy for an environment by ruleId #
DELETE /environments/{environmentId}/waas/policies Delete a WAAS policy rule by ruleId #
POST /environments/{environmentId}/waas/{walletId}/signaturePolicy Create a new WAAS signature policy for a wallet #
GET /environments/{environmentId}/waas/{walletId}/signaturePolicy Get all active WAAS signature policies for a wallet #
GET /environments/{environmentId}/waas/{walletId}/signaturePolicy/{policyId} Get a WAAS signature policy by walletId and policyId #
PUT /environments/{environmentId}/waas/{walletId}/signaturePolicy/{policyId} Update a WAAS signature policy by walletId and policyId #
DELETE /environments/{environmentId}/waas/{walletId}/signaturePolicy/{policyId} Delete a WAAS signature policy by walletId and policyId #
GET /sdk/{environmentId}/waas/delegatedAccess/encryptionPublicKey Get delegated access encryption public key for an environment #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/dynamic-xyz-waas-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

dynamic-xyz-waas-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Dashboard Allowlists Waas 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: Waas
paths:
  /environments/{environmentId}/waas/create:
    post:
      operationId: createWaasWallet
      description: Creates a new WAAS 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: Create a new WAAS for a user given an identifier
      tags:
      - Waas
      security:
      - bearerAuth: []
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        description: Pregenerate WAAS wallet for a user given an identifier
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateUserWaasWalletsRequest'
      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'
  /environments/{environmentId}/waas/authenticate:
    post:
      operationId: authenticateWaas
      tags:
      - Waas
      summary: Authenticate for WAAS using api key
      security:
      - bearerAuth: []
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: Successfully authenticated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasAuthenticateResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /environments/{environmentId}/waas/verifyApiKey:
    post:
      operationId: verifyApiKey
      tags:
      - Waas
      summary: Verify if an API key is valid for a specific environment
      description: Simple endpoint to verify if the provided API key (DYN_API_TOKEN) is valid and has access to the specified environment. Returns true if the token is verified, false otherwise.
      security:
      - bearerAuth: []
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: API key verification result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasVerifyApiKeyResponse'
        '400':
          description: Bad request - token is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasVerifyApiKeyErrorResponse'
        '401':
          description: Unauthorized - invalid or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasVerifyApiKeyErrorResponse'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /environments/{environmentId}/waas/{walletId}/delegatedAccess/signMessage:
    post:
      operationId: delegatedSignMessage
      tags:
      - Waas
      summary: Sign a message with a delegated waas account
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/walletId'
      requestBody:
        description: Delegate Sign Message Request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaasDelegateSignMessageRequest'
      responses:
        '200':
          description: Successfully created a room for delegated signing message ceremony
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OpenRoomResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /environments/{environmentId}/waas/{walletId}/delegatedAccess:
    delete:
      operationId: deleteDelegatedAccess
      tags:
      - Waas
      summary: Revoke delegated access for a single wallet
      description: 'Allows developers to revoke their own delegated access for a specific wallet

        '
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/walletId'
      responses:
        '204':
          description: Delegated access successfully revoked
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /environments/{environmentId}/waas/delegatedAccess/revoke:
    post:
      operationId: revokeDelegatedAccess
      tags:
      - Waas
      summary: Revoke delegated access for one or more wallets
      description: 'Allows developers to revoke their own delegated access

        '
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        description: Revoke Delegated Access Request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RevokeDelegatedAccessRequest'
      responses:
        '200':
          description: Delegated access revocation processed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RevokeDelegatedAccessResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /environments/{environmentId}/waas/delegatedAccess/encryptionPublicKeys:
    get:
      operationId: getDelegatedAccessEncryptionPublicKeys
      tags:
      - Waas
      summary: Get delegated access encryption public keys for an environment
      description: 'Fetches the encryption public keys used for delegated access in a WAAS environment.

        By default, returns only the latest active key. Use the includeAll query parameter to get all keys.

        '
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - name: includeAll
        in: query
        description: If true, returns all encryption public keys. Otherwise, returns only the latest active key.
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Encryption public keys fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DelegatedAccessEncryptionPublicKeysUnifiedResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      operationId: createDelegatedCredentials
      tags:
      - Waas
      summary: Create credentials for waas wallet delegation
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaasDelegationCredentialsRequest'
      responses:
        '201':
          description: Credentials for waas wallet delegation created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasDelegationCredentialsResponse'
        '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'
  /environments/{environmentId}/waas/delegatedAccess/encryptionPublicKeys/{keyId}:
    get:
      operationId: getDelegatedAccessEncryptionPublicKeyById
      tags:
      - Waas
      summary: Get a specific delegated access encryption public key by ID
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - name: keyId
        in: path
        description: The ID of the encryption public key
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Encryption public key fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DelegatedAccessEncryptionPublicKeyResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /environments/{environmentId}/waas/{walletId}:
    get:
      operationId: getWaasWalletByWalletId
      tags:
      - Waas
      summary: Get a specific WAAS wallet by walletId
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - name: walletId
        in: path
        description: The ID of the WAAS wallet
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: WAAS wallet fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasWalletResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /environments/{environmentId}/waas/{walletId}/keyShares/backup/locations:
    post:
      operationId: backupKeySharesToLocationsForPregen
      tags:
      - Waas
      summary: Create backup action for key shares using API token authentication
      description: 'Creates backup locations for wallet key shares. Requires API token authentication. Validates that the user belongs to the environment and that no client key shares exist for the wallet. This endpoint is intended for server-side integrations that need to backup key shares on behalf of users.

        '
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/walletId'
      requestBody:
        description: Backup locations request with userId
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BackupKeySharesToLocationsWithUserIdRequest'
      responses:
        '201':
          description: Backup action and event created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BackupKeySharesToLocationsResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /environments/{environmentId}/waas/policies:
    post:
      operationId: createWaasPolicy
      tags:
      - Waas
      summary: Create a new WAAS policy for an environment or add new rules to an existing policy
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaasPolicyCreateRequest'
      responses:
        '201':
          description: WAAS policy created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasPolicyResponse'
        '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'
    get:
      operationId: getWaasPolicy
      tags:
      - Waas
      summary: Get the WAAS policy for an environment
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: WAAS policy fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasPolicyResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      operationId: updateWaasPolicy
      tags:
      - Waas
      summary: Update the WAAS policy for an environment by ruleId
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaasPolicyUpdateRequest'
      responses:
        '200':
          description: WAAS policy updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasPolicyResponse'
        '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'
    delete:
      operationId: deleteWaasPolicy
      tags:
      - Waas
      summary: Delete a WAAS policy rule by ruleId
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaasPolicyDeleteRequest'
      responses:
        '200':
          description: WAAS policy rules deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasPolicyResponse'
        '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'
  /environments/{environmentId}/waas/{walletId}/signaturePolicy:
    post:
      operationId: createWaasSignaturePolicy
      tags:
      - Waas
      summary: Create a new WAAS signature policy for a wallet
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/walletId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpCreateRequest'
      responses:
        '201':
          description: WAAS signature policy created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
    get:
      operationId: getWaasSignaturePolicies
      tags:
      - Waas
      summary: Get all active WAAS signature policies for a wallet
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/walletId'
      responses:
        '200':
          description: WAAS signature policies fetched successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /environments/{environmentId}/waas/{walletId}/signaturePolicy/{policyId}:
    get:
      operationId: getWaasSignaturePolicyByWalletIdAndPolicyId
      tags:
      - Waas
      summary: Get a WAAS signature policy by walletId and policyId
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/walletId'
      - name: policyId
        in: path
        description: The ID of the signature policy for the wallet
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: WAAS signature policy fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      operationId: updateWaasSignaturePolicyByWalletIdAndPolicyId
      tags:
      - Waas
      summary: Update a WAAS signature policy by walletId and policyId
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/walletId'
      - name: policyId
        in: path
        description: The ID of the signature policy for the wallet
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpCreateRequest'
      responses:
        '200':
          description: WAAS signature policy updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      operationId: deleteWaasSignaturePolicyByWalletIdAndPolicyId
      tags:
      - Waas
      summary: Delete a WAAS signature policy by walletId and policyId
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/walletId'
      - name: policyId
        in: path
        description: The ID of the signature policy for the wallet
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: WAAS signature policy deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/waas/delegatedAccess/encryptionPublicKey:
    get:
      operationId: getDelegatedAccessEncryptionPublicKey
      tags:
      - Waas
      summary: Get delegated access encryption public key for an environment
      description: 'Fetches the encryption public key used for delegated access in a WAAS environment.

        By default, returns only the latest active key.

        '
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: Encryption public key fetched successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DelegatedAccessEncryptionPublicKeyResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    JwtVerifiedCredentialFormatEnum:
      type: string
      enum:
      - blockchain
      - email
      - oauth
      - passkey
      - phoneNumber
      - externalUser
    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'
    WaasChainEnum:
      type: string
      enum:
      - EVM
      - SVM
      - SUI
      - BTC
      - TON
    WaasDelegationCredentialsRequest:
      type: object
      required:
      - publicKey
      properties:
        publicKey:
          $ref: '#/components/schemas/NonEmptyStringWith4096MaxLength'
        alg:
          $ref: '#/components/schemas/NonEmptyStringWith50MaxLength'
        type:
          $ref: '#/components/schemas/WaasDelegatedAccessEncryptionPublicKeyType'
    WaasWalletResponse:
      type: object
      required:
      - wallet
      properties:
        wallet:
          $ref: '#/components/schemas/WaasWallet'
    WaasPolicyArgumentConstraint:
      type: object
      required:
      - operator
      - value
      - index
      properties:
        operator:
          $ref: '#/components/schemas/WaasPolicyConstraintCondition'
        value:
          description: Reference value for comparison
        index:
          type: integer
          minimum: 0
          description: Index of the function argument to validate
    NonEmptyStringWith255MaxLengthAndSpecialChars:
      type: string
      pattern: ^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'()\[\]*]+(?<=\S)$
      maxLength: 255
      example: An example name
    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
    Wallet:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/uuid'
        name:
          $ref: '#/components/schemas/NonEmptyString'
        chain:
          $ref: '#/components/schemas/ChainEnum'
        publicKey:
          $ref: '#/components/schemas/WalletPublicKey'
        provider:
          $ref: '#/components/schemas/WalletProviderEnum'
        properties:
          $ref: '#/components/schemas/WalletProperties'
        lastSelectedAt:
          type:
          - string
          - 'null'
      required:
      - id
      - name
      - chain
      - publicKey
      - provider
    Unauthorized:
      type: object
      properties:
        error:
          type: string
          example: No jwt provided!
    InternalServerError:
      type: object
      properties:
        error:
          type: string
          example: Internal Server Error
    JwtVerifiedCredential:
      type: object
      required:
      - id
      - format
      - signInEnabled
      properties:
        address:
          $ref: '#/components/schemas/WalletPublicKey'
        chain:
          type: string
        refId:
          $ref: '#/components/schemas/uuid'
        signerRefId:
          $ref: '#/components/schemas/uuid'
        email:
          type: string
          format: email
        id:
          $ref: '#/components/schemas/uuid'
        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:
          type: string
        wallet_provider:
          $ref: '#/components/schemas/WalletProviderEnum'
        wallet_properties:
          $ref: '#/components/schemas/WalletProperties'
        format:
          $ref: '#/components/schemas/JwtVerifiedCredentialFormatEnum'
        oauth_provider:
          $ref: '#/components/schemas/ProviderEnum'
        oauth_username:
          type: string
        oauth_display_name:
          type:
          - string
          - 'null'
        oauth_account_id:
          type:
          - string
          - 'null'
        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:
          type: array
          items:
            type: string
        oauth_emails:
          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:
          type:
          - string
          - 'null'
        wallet_additional_addresses:
          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.
    BackupKeySharesToLocationsResponse:
      type: object
      required:
      - message
      - walletId
      - locationsWithKeyShares
      properties:
        message:
          type: string
        walletId:
          $ref: '#/components/schemas/uuid'
        locationsWithKeyShares:
          type: array
          items:
            type: object
            required:
            - location
            - keyShareId
            - externalKeyShareId
            properties:
              location:
                $ref: '#/components/schemas/WaasBackupOptionsEnum'
              keyShareId:
                $ref: '#/components/schemas/uuid'
              externalKeyShareId:
                $ref: '#/components/schemas/uuid'
    NonEmptyStringWith50MaxLength:
      type: string
      pattern: ^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'|]+(?<=\S)$
      example: An example name
      maxLength: 50
    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
    NotFound:
      type: object
      required:
      - error
      - code
      properties:
        error:
          type: string
          example: Not Found
        code:
          type: string
          example: not_found
    WaasPolicyRule:
      type: object
      required:
      - name
      - ruleType
      - chain
      properties:
        ruleId:
          $ref: '#/components/schemas/uuid'
        name:
          type: string
          description: Human-readable name for the rule
        ruleType:
          $ref: '#/components/schemas/WaasPolicyRuleType'
        address:
          description: Target address EVM or SVM (legacy field)
  

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