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

# Migrate

> Adds an existing password to a User's email that doesn't have a password yet.

We support migrating users from passwords stored with `bcrypt`, `scrypt`, `argon2`, `MD-5`, `SHA-1`, `SHA-512`, or `PBKDF2`.

<Note>
  This endpoint has a rate limit of 100 requests per second.
</Note>


## OpenAPI

````yaml POST /v1/passwords/migrate
openapi: 3.0.3
info:
  title: Stytch API
  description: The Stytch API provides endpoints for authentication and user management.
  version: 2.1.1
  contact:
    name: Stytch Support
    url: https://stytch.com/docs
    email: support@stytch.com
servers:
  - url: https://api.stytch.com
    description: Production server
  - url: https://test.stytch.com
    description: Test server
security:
  - basicAuth: []
paths:
  /v1/passwords/migrate:
    post:
      tags:
        - Password
      summary: Migrate
      description: >-
        Adds an existing password to a User's email that doesn't have a password
        yet. We support migrating users from passwords stored with `bcrypt`,
        `scrypt`, `argon2`, `MD-5`, `SHA-1`, `SHA-512`, or `PBKDF2`. This
        endpoint has a rate limit of 100 requests per second.
      operationId: api_password_v1_Migrate
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/api_password_v1_MigrateRequest'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/api_password_v1_MigrateResponse'
        '400':
          description: Bad request
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                status_code: 401
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: unauthorized_credentials
                error_message: Unauthorized credentials.
                error_url: https://stytch.com/docs/api/errors/401
        '429':
          description: Too Many Requests
          content:
            application/json:
              example:
                status_code: 429
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: too_many_requests
                error_message: Too many requests have been made.
                error_url: https://stytch.com/docs/api/errors/429
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                status_code: 500
                request_id: request-id-test-b05c992f-ebdc-489d-a754-c7e70ba13141
                error_type: internal_server_error
                error_message: >-
                  Oops, something seems to have gone wrong, please reach out to
                  support@stytch.com to let us know what went wrong.
                error_url: https://stytch.com/docs/api/errors/500
      x-code-samples:
        - lang: csharp
          label: C#
          source: |-
            // POST /v1/passwords/migrate
            const stytch = require('stytch');

            const client = new stytch.Client({
              project_id: '${projectId}',
              secret: '${secret}',
            });

            const params = {
              email: "sandbox@stytch.com",
              hash: "$2a$12$vefoDBbzuMb/NczV/fc9QemTizkNAZr9EO02pIUHPAAJibcYp0.ne",
              hash_type: "bcrypt",
              phone_number: "+12025550162",
              external_id: "my-new-external-id",
            };

            client.Passwords.Migrate(params)
              .then(resp => { console.log(resp) })
              .catch(err => { console.log(err) });
        - lang: go
          label: Go
          source: "// POST /v1/passwords/migrate\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/stytchauth/stytch-go/v18/stytch/consumer/passwords\"\n\t\"github.com/stytchauth/stytch-go/v18/stytch/consumer/stytchapi\"\n)\n\nfunc main() {\n\tclient, err := stytchapi.NewClient(\n\t\t\"${projectId}\",\n\t\t\"${secret}\",\n\t)\n\tif err != nil {\n\t\tlog.Fatalf(\"error instantiating client: %v\", err)\n\t}\n\n\tparams := &passwords.MigrateParams{\n\t\tEmail:       \"sandbox@stytch.com\",\n\t\tHash:        \"$2a$12$vefoDBbzuMb/NczV/fc9QemTizkNAZr9EO02pIUHPAAJibcYp0.ne\",\n\t\tHashType:    passwords.MigrateRequestHashTypeBcrypt,\n\t\tPhoneNumber: \"+12025550162\",\n\t\tExternalID:  \"my-new-external-id\",\n\t}\n\n\tresp, err := client.Passwords.Migrate(context.Background(), params)\n\tif err != nil {\n\t\tlog.Fatalf(\"error in method call: %v\", err)\n\t}\n\n\tlog.Println(resp)\n}\n"
        - lang: java
          label: Java
          source: >-
            // POST /v1/passwords/migrate

            package com.example;


            import com.stytch.java.common.StytchResult;

            import com.stytch.java.consumer.models.passwords.MigrateRequest;

            import
            com.stytch.java.consumer.models.passwords.MigrateRequestHashType;

            import com.stytch.java.consumer.StytchClient;


            public class Main {
                public static void main(String[] args) {
                    StytchClient.configure("${projectId}", "${secret}");

                    MigrateRequest params = new MigrateRequest();
                    params.setEmail("sandbox@stytch.com");
                    params.setHash("$2a$12$vefoDBbzuMb/NczV/fc9QemTizkNAZr9EO02pIUHPAAJibcYp0.ne");
                    params.setHashType(MigrateRequestHashType.BCRYPT);
                    params.setPhoneNumber("+12025550162");
                    params.setExternalId("my-new-external-id");

                    Object result = StytchClient.getPasswords().migrate(params);
                    if (result instanceof StytchResult.Success) {
                      System.out.println(((StytchResult.Success) result).getValue());
                    } else {
                      System.out.println(((StytchResult.Error) result).getException());
                    }
                }
            }
        - lang: kotlin
          label: Kotlin
          source: >
            // POST /v1/passwords/migrate

            package com.example


            import com.stytch.java.consumer.StytchClient

            import com.stytch.java.consumer.models.passwords.MigrateRequest

            import
            com.stytch.java.consumer.models.passwords.MigrateRequestHashType


            fun main() {
                StytchClient.configure(
                    projectId = "${projectId}",
                    secret = "${secret}",
                )

                when (
                    val result =
                        StytchClient.passwords.migrate(
                            MigrateRequest(
                                email = "sandbox@stytch.com",
                                hash = "$2a$12$vefoDBbzuMb/NczV/fc9QemTizkNAZr9EO02pIUHPAAJibcYp0.ne",
                                hashType = MigrateRequestHashType.BCRYPT,
                                phoneNumber = "+12025550162",
                                externalId = "my-new-external-id",
                            ),
                        )
                ) {
                    is StytchResult.Success -> println(result.value)
                    is StytchResult.Error -> println(result.exception)
                }
            }
        - lang: javascript
          label: Node.js
          source: |-
            // POST /v1/passwords/migrate
            const stytch = require('stytch');

            const client = new stytch.Client({
              project_id: '${projectId}',
              secret: '${secret}',
            });

            const params = {
              email: "sandbox@stytch.com",
              hash: "$2a$12$vefoDBbzuMb/NczV/fc9QemTizkNAZr9EO02pIUHPAAJibcYp0.ne",
              hash_type: "bcrypt",
              phone_number: "+12025550162",
              external_id: "my-new-external-id",
            };

            client.passwords.migrate(params)
              .then(resp => { console.log(resp) })
              .catch(err => { console.log(err) });
        - lang: php
          label: PHP
          source: |-
            $response = $client->passwords->migrate([
                'email' => 'sandbox@stytch.com',
                'hash' => '$2a$12$vefoDBbzuMb/NczV/fc9QemTizkNAZr9EO02pIUHPAAJibcYp0.ne',
                'hash_type' => 'bcrypt',
                'phone_number' => '+12025550162',
                'external_id' => 'my-new-external-id',
            ]);
        - lang: python
          label: Python
          source: |
            # POST /v1/passwords/migrate
            from stytch import Client
            from stytch.consumer.models.passwords import MigrateRequestHashType

            client = Client(
                project_id="${projectId}",
                secret="${secret}",
            )

            resp = client.passwords.migrate(
                email="sandbox@stytch.com",
                hash="$2a$12$vefoDBbzuMb/NczV/fc9QemTizkNAZr9EO02pIUHPAAJibcYp0.ne",
                hash_type=MigrateRequestHashType.BCRYPT,
                phone_number="+12025550162",
                external_id="my-new-external-id",
            )

            print(resp)
        - lang: ruby
          label: Ruby
          source: |-
            # frozen_string_literal: true

            # POST /v1/passwords/migrate
            require 'stytch'

            client = Stytch::Client.new(
              project_id: "${projectId}",
              secret: "${secret}"
            )

            resp = client.passwords.migrate(
              email: "sandbox@stytch.com",
              hash: "$2a$12$vefoDBbzuMb/NczV/fc9QemTizkNAZr9EO02pIUHPAAJibcYp0.ne",
              hash_type: "bcrypt",
              phone_number: "+12025550162",
              external_id: "my-new-external-id"
              
            )

            puts resp
        - lang: rust
          label: Rust
          source: |-
            // POST /v1/passwords/migrate
            use stytch::consumer::client::Client;
            use stytch::consumer::passwords::MigrateRequest;
            use stytch::consumer::passwords::MigrateRequestHashType;

            fn main() {
                let client = Client::new("${projectId}", "${secret}").unwrap();
                let resp = client.passwords.migrate(
                    MigrateRequest{
                        email: "sandbox@stytch.com",
                        hash: "$2a$12$vefoDBbzuMb/NczV/fc9QemTizkNAZr9EO02pIUHPAAJibcYp0.ne",
                        hash_type: MigrateRequestHashType::BCRYPT,
                        phone_number: Some(String::from("+12025550162")),
                        external_id: Some(String::from("my-new-external-id")),
                        ..Default::default()
                    }
                ).await;
                println!("The response is {:?}", resp);
            }
        - lang: bash
          label: cURL
          source: |-
            # POST /v1/passwords/migrate
            curl --request POST \
              --url https://test.stytch.com/v1/passwords/migrate \
              -u '${projectId}:${secret}' \
              -H 'Content-Type: application/json' \
              -d '{
                "email": "sandbox@stytch.com",
                "hash": "$2a$12$vefoDBbzuMb/NczV/fc9QemTizkNAZr9EO02pIUHPAAJibcYp0.ne",
                "hash_type": "bcrypt",
                "phone_number": "+12025550162",
                "external_id": "my-new-external-id"
              }'
components:
  schemas:
    api_password_v1_MigrateRequest:
      type: object
      properties:
        email:
          type: string
          description: The email address of the end user.
        hash:
          type: string
          description: >-
            The password hash. For a Scrypt or PBKDF2 hash, the hash needs to be
            a base64 encoded string.
        hash_type:
          $ref: >-
            #/components/schemas/api_password_v1_passwords_MigrateRequestHashType
          description: >-
            The password hash used. Currently `bcrypt`, `scrypt`, `argon_2i`,
            `argon_2id`, `md_5`, `sha_1`, `sha_512`, and `pbkdf_2` are
            supported.
        md_5_config:
          $ref: '#/components/schemas/api_password_v1_MD5Config'
          description: Optional parameters for MD-5 hash types.
        argon_2_config:
          $ref: '#/components/schemas/api_password_v1_Argon2Config'
          description: >-
            Required parameters if the argon2 hex form, as opposed to the
            encoded form, is supplied.
        sha_1_config:
          $ref: '#/components/schemas/api_password_v1_SHA1Config'
          description: Optional parameters for SHA-1 hash types.
        sha_512_config:
          $ref: '#/components/schemas/api_password_v1_SHA512Config'
          description: Optional parameters for SHA-512 hash types.
        scrypt_config:
          $ref: '#/components/schemas/api_password_v1_ScryptConfig'
          description: >-
            Required parameters if the scrypt is not provided in a [PHC encoded
            form](https://github.com/P-H-C/phc-string-format/blob/master/phc-sf-spec.md#phc-string-format).
        pbkdf_2_config:
          $ref: '#/components/schemas/api_password_v1_PBKDF2Config'
          description: Required additional parameters for PBKDF2 hash keys.
        trusted_metadata:
          type: object
          additionalProperties: true
          description: >-
            The `trusted_metadata` field contains an arbitrary JSON object of
            application-specific data. See the
            [Metadata](https://stytch.com/docs/api/metadata) reference for
            complete field behavior details.
        untrusted_metadata:
          type: object
          additionalProperties: true
          description: >-
            The `untrusted_metadata` field contains an arbitrary JSON object of
            application-specific data. Untrusted metadata can be edited by end
            users directly via the SDK, and **cannot be used to store critical
            information.** See the
            [Metadata](https://stytch.com/docs/api/metadata) reference for
            complete field behavior details.
        set_email_verified:
          type: boolean
          description: >-
            Whether to set the user's email as verified. This is a dangerous
            field, incorrect use may lead to users getting erroneously
                            deduplicated into one User object. This flag should only be set if you can attest that the user owns the email address in question.
                            
        name:
          $ref: '#/components/schemas/api_user_v1_Name'
          description: The name of the user. Each field in the name object is optional.
        phone_number:
          type: string
          description: >-
            The phone number of the user. The phone number should be in E.164
            format (i.e. +1XXXXXXXXXX).
        set_phone_number_verified:
          type: boolean
          description: >-
            Whether to set the user's phone number as verified. This is a
            dangerous field, this flag should only be set if you can attest that
               the user owns the phone number in question.
        external_id:
          type: string
          description: >-
            If a new user is created, this will set an identifier that can be
            used in API calls wherever a user_id is expected. This is a string
            consisting of alphanumeric, `.`, `_`, `-`, or `|` characters with a
            maximum length of 128 characters.
        roles:
          type: array
          items:
            type: string
          description: |-
            Roles to explicitly assign to this User.
               See the [RBAC guide](https://stytch.com/docs/guides/rbac/role-assignment) for more information about role assignment.
      description: Request type
      required:
        - email
        - hash
        - hash_type
    api_password_v1_MigrateResponse:
      type: object
      properties:
        request_id:
          type: string
          description: >-
            Globally unique UUID that is returned with every API call. This
            value is important to log for debugging purposes; we may ask for
            this value to help identify a specific API call when helping you
            debug an issue.
        user_id:
          type: string
          description: The unique ID of the affected User.
        email_id:
          type: string
          description: The unique ID of a specific email address.
        user_created:
          type: boolean
          description: >-
            In `login_or_create` endpoints, this field indicates whether or not
            a User was just created.
        user:
          $ref: '#/components/schemas/api_user_v1_User'
          description: >-
            The `user` object affected by this API call. See the [Get user
            endpoint](https://stytch.com/docs/api/get-user) for complete
            response field details.
        status_code:
          type: integer
          format: int32
          description: >-
            The HTTP status code of the response. Stytch follows standard HTTP
            response status code patterns, e.g. 2XX values equate to success,
            3XX values are redirects, 4XX are client errors, and 5XX are server
            errors.
      required:
        - request_id
        - user_id
        - email_id
        - user_created
        - user
        - status_code
    api_password_v1_passwords_MigrateRequestHashType:
      type: string
      enum:
        - bcrypt
        - md_5
        - argon_2i
        - argon_2id
        - sha_1
        - sha_512
        - scrypt
        - phpass
        - pbkdf_2
    api_password_v1_MD5Config:
      type: object
      properties:
        prepend_salt:
          type: string
          description: The salt that should be prepended to the migrated password.
        append_salt:
          type: string
          description: The salt that should be appended to the migrated password.
      required:
        - prepend_salt
        - append_salt
    api_password_v1_Argon2Config:
      type: object
      properties:
        salt:
          type: string
          description: The salt value.
        iteration_amount:
          type: integer
          format: int32
          description: The iteration amount.
        memory:
          type: integer
          format: int32
          description: The memory in kibibytes.
        threads:
          type: integer
          format: int32
          description: The thread value, also known as the parallelism factor.
        key_length:
          type: integer
          format: int32
          description: The key length, also known as the hash length.
      required:
        - salt
        - iteration_amount
        - memory
        - threads
        - key_length
    api_password_v1_SHA1Config:
      type: object
      properties:
        prepend_salt:
          type: string
          description: The salt that should be prepended to the migrated password.
        append_salt:
          type: string
          description: The salt that should be appended to the migrated password.
      required:
        - prepend_salt
        - append_salt
    api_password_v1_SHA512Config:
      type: object
      properties:
        prepend_salt:
          type: string
          description: The salt that should be prepended to the migrated password.
        append_salt:
          type: string
          description: The salt that should be appended to the migrated password.
      required:
        - prepend_salt
        - append_salt
    api_password_v1_ScryptConfig:
      type: object
      properties:
        salt:
          type: string
          description: The salt value, which should be in a base64 encoded string form.
        n_parameter:
          type: integer
          format: int32
          description: >-
            The N value, also known as the iterations count. It must be a power
            of two greater than 1 and less than 262,145.
                  If your application's N parameter is larger than 262,144, please reach out to [support@stytch.com](mailto:support@stytch.com)
        r_parameter:
          type: integer
          format: int32
          description: The r parameter, also known as the block size.
        p_parameter:
          type: integer
          format: int32
          description: The p parameter, also known as the parallelism factor.
        key_length:
          type: integer
          format: int32
          description: The key length, also known as the hash length.
      required:
        - salt
        - n_parameter
        - r_parameter
        - p_parameter
        - key_length
    api_password_v1_PBKDF2Config:
      type: object
      properties:
        salt:
          type: string
          description: The salt value, which should be in a base64 encoded string form.
        iteration_amount:
          type: integer
          format: int32
          description: The iteration amount.
        key_length:
          type: integer
          format: int32
          description: The key length, also known as the hash length.
        algorithm:
          type: string
          description: >-
            The algorithm that was used to generate the HMAC hash. Accepted
            values are "sha512" and sha256". Defaults to sha256.
      required:
        - salt
        - iteration_amount
        - key_length
        - algorithm
    api_user_v1_Name:
      type: object
      properties:
        first_name:
          type: string
          description: The first name of the user.
        middle_name:
          type: string
          description: The middle name(s) of the user.
        last_name:
          type: string
          description: The last name of the user.
    api_user_v1_User:
      type: object
      properties:
        user_id:
          type: string
          description: The unique ID of the affected User.
        emails:
          type: array
          items:
            $ref: '#/components/schemas/api_user_v1_Email'
          description: An array of email objects for the User.
        status:
          type: string
          description: >-
            The status of the User. The possible values are `pending` and
            `active`.
        phone_numbers:
          type: array
          items:
            $ref: '#/components/schemas/api_user_v1_PhoneNumber'
          description: An array of phone number objects linked to the User.
        webauthn_registrations:
          type: array
          items:
            $ref: '#/components/schemas/api_user_v1_WebAuthnRegistration'
          description: >-
            An array that contains a list of all Passkey or WebAuthn
            registrations for a given User in the Stytch API.
        providers:
          type: array
          items:
            $ref: '#/components/schemas/api_user_v1_OAuthProvider'
          description: An array of OAuth `provider` objects linked to the User.
        totps:
          type: array
          items:
            $ref: '#/components/schemas/api_user_v1_TOTP'
          description: >-
            An array containing a list of all TOTP instances for a given User in
            the Stytch API.
        crypto_wallets:
          type: array
          items:
            $ref: '#/components/schemas/api_user_v1_CryptoWallet'
          description: >-
            An array contains a list of all crypto wallets for a given User in
            the Stytch API.
        biometric_registrations:
          type: array
          items:
            $ref: '#/components/schemas/api_user_v1_BiometricRegistration'
          description: >-
            An array that contains a list of all biometric registrations for a
            given User in the Stytch API.
        is_locked:
          type: boolean
          description: >-
            Whether the User is temporarily locked due to too many failed
            authentication attempts. See the [User Locking
            Guide](https://stytch.com/docs/resources/platform/user-locks) for
            more information.
        roles:
          type: array
          items:
            type: string
          description: |-
            Roles assigned to this User.
               See the [RBAC guide](https://stytch.com/docs/guides/rbac/role-assignment) for more information about role assignment.
        name:
          $ref: '#/components/schemas/api_user_v1_Name'
          description: The name of the User. Each field in the `name` object is optional.
        created_at:
          type: string
          description: >-
            The timestamp of the User's creation. Values conform to the RFC 3339
            standard and are expressed in UTC, e.g. `2021-12-29T12:33:09Z`.
        password:
          $ref: '#/components/schemas/api_user_v1_Password'
          description: The password object is returned for users with a password.
        trusted_metadata:
          type: object
          additionalProperties: true
          description: >-
            The `trusted_metadata` field contains an arbitrary JSON object of
            application-specific data. See the
            [Metadata](https://stytch.com/docs/api/metadata) reference for
            complete field behavior details.
        untrusted_metadata:
          type: object
          additionalProperties: true
          description: >-
            The `untrusted_metadata` field contains an arbitrary JSON object of
            application-specific data. Untrusted metadata can be edited by end
            users directly via the SDK, and **cannot be used to store critical
            information.** See the
            [Metadata](https://stytch.com/docs/api/metadata) reference for
            complete field behavior details.
        external_id:
          type: string
          description: >-
            An identifier that can be used in most API calls where a `member_id`
            is expected. This is a string consisting of alphanumeric, `.`, `_`,
            `-`, or `|` characters with a maximum length of 128 characters.
            External IDs must be unique within the project.
        lock_created_at:
          type: string
          description: >-
            When the user lock was created, if there is one. Values conform to
            the RFC 3339 standard and are expressed in UTC, e.g.
            `2021-12-29T12:33:09Z`.
        lock_expires_at:
          type: string
          description: >-
            When the user lock expires, if there is one. Values conform to the
            RFC 3339 standard and are expressed in UTC, e.g.
            `2021-12-29T12:33:09Z`.
      required:
        - user_id
        - emails
        - status
        - phone_numbers
        - webauthn_registrations
        - providers
        - totps
        - crypto_wallets
        - biometric_registrations
        - is_locked
        - roles
    api_user_v1_Email:
      type: object
      properties:
        email_id:
          type: string
          description: The unique ID of a specific email address.
        email:
          type: string
          description: The email address.
        verified:
          type: boolean
          description: >-
            The verified boolean denotes whether or not this send method, e.g.
            phone number, email address, etc., has been successfully
            authenticated by the User.
      required:
        - email_id
        - email
        - verified
    api_user_v1_PhoneNumber:
      type: object
      properties:
        phone_id:
          type: string
          description: The unique ID for the phone number.
        phone_number:
          type: string
          description: The phone number.
        verified:
          type: boolean
          description: >-
            The verified boolean denotes whether or not this send method, e.g.
            phone number, email address, etc., has been successfully
            authenticated by the User.
      required:
        - phone_id
        - phone_number
        - verified
    api_user_v1_WebAuthnRegistration:
      type: object
      properties:
        webauthn_registration_id:
          type: string
          description: The unique ID for the Passkey or WebAuthn registration.
        domain:
          type: string
          description: >-
            The `domain` on which Passkey or WebAuthn registration was started.
            This will be the domain of your app.
        user_agent:
          type: string
          description: The user agent of the User.
        verified:
          type: boolean
          description: >-
            The verified boolean denotes whether or not this send method, e.g.
            phone number, email address, etc., has been successfully
            authenticated by the User.
        authenticator_type:
          type: string
          description: >-
            The `authenticator_type` string displays the requested authenticator
            type of the Passkey or WebAuthn device. The two valid types are
            "platform" and "cross-platform". If no value is present, the Passkey
            or WebAuthn device was created without an authenticator type
            preference.
        name:
          type: string
          description: The `name` of the Passkey or WebAuthn registration.
      required:
        - webauthn_registration_id
        - domain
        - user_agent
        - verified
        - authenticator_type
        - name
    api_user_v1_OAuthProvider:
      type: object
      properties:
        provider_type:
          type: string
          description: >-
            Denotes the OAuth identity provider that the user has authenticated
            with, e.g. Google, Facebook, GitHub etc.
        provider_subject:
          type: string
          description: >-
            The unique identifier for the User within a given OAuth provider.
            Also commonly called the "sub" or "Subject field" in OAuth
            protocols.
        profile_picture_url:
          type: string
          description: >-
            If available, the `profile_picture_url` is a url of the User's
            profile picture set in OAuth identity the provider that the User has
            authenticated with, e.g. Facebook profile picture.
        locale:
          type: string
          description: >-
            If available, the `locale` is the User's locale set in the OAuth
            identity provider that the user has authenticated with.
        oauth_user_registration_id:
          type: string
          description: The unique ID for an OAuth registration.
      required:
        - provider_type
        - provider_subject
        - profile_picture_url
        - locale
        - oauth_user_registration_id
    api_user_v1_TOTP:
      type: object
      properties:
        totp_id:
          type: string
          description: The unique ID for a TOTP instance.
        verified:
          type: boolean
          description: >-
            The verified boolean denotes whether or not this send method, e.g.
            phone number, email address, etc., has been successfully
            authenticated by the User.
      required:
        - totp_id
        - verified
    api_user_v1_CryptoWallet:
      type: object
      properties:
        crypto_wallet_id:
          type: string
          description: The unique ID for a crypto wallet
        crypto_wallet_address:
          type: string
          description: The actual blockchain address of the User's crypto wallet.
        crypto_wallet_type:
          type: string
          description: >-
            The blockchain that the User's crypto wallet operates on, e.g.
            Ethereum, Solana, etc.
        verified:
          type: boolean
          description: >-
            The verified boolean denotes whether or not this send method, e.g.
            phone number, email address, etc., has been successfully
            authenticated by the User.
      required:
        - crypto_wallet_id
        - crypto_wallet_address
        - crypto_wallet_type
        - verified
    api_user_v1_BiometricRegistration:
      type: object
      properties:
        biometric_registration_id:
          type: string
          description: The unique ID for a biometric registration.
        verified:
          type: boolean
          description: >-
            The verified boolean denotes whether or not this send method, e.g.
            phone number, email address, etc., has been successfully
            authenticated by the User.
      required:
        - biometric_registration_id
        - verified
    api_user_v1_Password:
      type: object
      properties:
        password_id:
          type: string
          description: The unique ID of a specific password
        requires_reset:
          type: boolean
          description: Indicates whether this password requires a password reset
      required:
        - password_id
        - requires_reset
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic

````