openapi: 3.0.3
info:
title: Stytch B2B Authentication Application Crypto Wallet API
version: 2.0.0
description: Stytch's B2B API for multi-tenant authentication. Supports Organizations, Members, SSO (SAML/OIDC), Magic Links, OTP, OAuth, Discovery, Sessions, B2B RBAC, SCIM, TOTP, Recovery Codes, Passwords, Impersonation, and the B2B IDP.
contact:
name: Stytch
url: https://stytch.com/docs
license:
name: Proprietary
servers:
- url: https://api.stytch.com
description: Production
- url: https://test.stytch.com
description: Test
tags:
- name: Crypto Wallet
paths:
/v1/crypto_wallets/authenticate/start:
post:
summary: Authenticatestart
operationId: api_crypto_wallet_v1_AuthenticateStart
tags:
- Crypto Wallet
description: 'Initiate the authentication of a crypto wallet. After calling this endpoint, the user will need to sign a message containing the returned `challenge` field.
For Ethereum crypto wallets, you can optionally use the Sign In With Ethereum (SIWE) protocol for the message by passing in the `siwe_params`. The only required fields are `domain` and `uri`.
If the crypto wallet detects that the domain in the message does not match the website''s domain, it will display a warning to the user.
If not using the SIWE protocol, the message will simply consist of the project name and a random string.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/api_crypto_wallet_v1_AuthenticateStartRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/api_crypto_wallet_v1_AuthenticateStartResponse'
'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/crypto_wallets/authenticate/start\nconst stytch = require('stytch');\n\nconst client = new stytch.Client({\n project_id: '${projectId}',\n secret: '${secret}',\n});\n\nconst params = {\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n};\n\nclient.CryptoWallets.AuthenticateStart(params)\n .then(resp => { console.log(resp) })\n .catch(err => { console.log(err) });"
- lang: go
label: Go
source: "// POST /v1/crypto_wallets/authenticate/start\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/stytchauth/stytch-go/v17/stytch/consumer/cryptowallets\"\n\t\"github.com/stytchauth/stytch-go/v17/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 := &cryptowallets.AuthenticateStartParams{\n\t\tCryptoWalletType: \"ethereum\",\n\t\tCryptoWalletAddress: \"${exampleEthereumAddress}\",\n\t}\n\n\tresp, err := client.CryptoWallets.AuthenticateStart(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/crypto_wallets/authenticate/start\npackage com.example;\n\nimport com.stytch.java.common.StytchResult;\nimport com.stytch.java.consumer.models.cryptowallets.AuthenticateStartRequest;\nimport com.stytch.java.consumer.StytchClient;\n\npublic class Main {\n public static void main(String[] args) {\n StytchClient.configure(\"${projectId}\", \"${secret}\");\n\n AuthenticateStartRequest params = new AuthenticateStartRequest();\n params.setCryptoWalletType(\"ethereum\");\n params.setCryptoWalletAddress(\"${exampleEthereumAddress}\");\n\n Object result = StytchClient.getCryptoWallets().authenticateStart(params);\n if (result instanceof StytchResult.Success) {\n System.out.println(((StytchResult.Success) result).getValue());\n } else {\n System.out.println(((StytchResult.Error) result).getException());\n }\n }\n}"
- lang: kotlin
label: Kotlin
source: "// POST /v1/crypto_wallets/authenticate/start\npackage com.example\n\nimport com.stytch.java.consumer.StytchClient\nimport com.stytch.java.consumer.models.cryptowallets.AuthenticateStartRequest\n\nfun main() {\n StytchClient.configure(\n projectId = \"${projectId}\",\n secret = \"${secret}\",\n )\n\n when (\n val result =\n StytchClient.cryptoWallets.authenticateStart(\n AuthenticateStartRequest(\n cryptoWalletType = \"ethereum\",\n cryptoWalletAddress = \"${exampleEthereumAddress}\",\n ),\n )\n ) {\n is StytchResult.Success -> println(result.value)\n is StytchResult.Error -> println(result.exception)\n }\n}\n"
- lang: javascript
label: Node.js
source: "// POST /v1/crypto_wallets/authenticate/start\nconst stytch = require('stytch');\n\nconst client = new stytch.Client({\n project_id: '${projectId}',\n secret: '${secret}',\n});\n\nconst params = {\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n};\n\nclient.cryptoWallets.authenticateStart(params)\n .then(resp => { console.log(resp) })\n .catch(err => { console.log(err) });"
- lang: php
label: PHP
source: "$response = $client->crypto_wallets->authenticate_start([\n 'crypto_wallet_type' => 'ethereum',\n 'crypto_wallet_address' => '${exampleEthereumAddress}',\n]);"
- lang: python
label: Python
source: "# POST /v1/crypto_wallets/authenticate/start\nfrom stytch import Client\n\nclient = Client(\n project_id=\"${projectId}\",\n secret=\"${secret}\",\n)\n\nresp = client.crypto_wallets.authenticate_start(\n crypto_wallet_type=\"ethereum\",\n crypto_wallet_address=\"${exampleEthereumAddress}\",\n)\n\nprint(resp)\n"
- lang: ruby
label: Ruby
source: "# POST /v1/crypto_wallets/authenticate/start\nrequire 'stytch'\n\nclient = Stytch::Client.new(\n project_id: \"${projectId}\",\n secret: \"${secret}\"\n)\n\nresp = client.crypto_wallets.authenticate_start(\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\"\n \n)\n\nputs resp"
- lang: rust
label: Rust
source: "// POST /v1/crypto_wallets/authenticate/start\nuse stytch::consumer::client::Client;\nuse stytch::consumer::crypto_wallets::AuthenticateStartRequest;\n\nfn main() {\n let client = Client::new(\"${projectId}\", \"${secret}\").unwrap();\n let resp = client.crypto_wallets.authenticate_start(\n AuthenticateStartRequest{\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n ..Default::default()\n }\n ).await;\n println!(\"The response is {:?}\", resp);\n}"
- lang: bash
label: cURL
source: "# POST /v1/crypto_wallets/authenticate/start\ncurl --request POST \\\n --url https://test.stytch.com/v1/crypto_wallets/authenticate/start \\\n -u '${projectId}:${secret}' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"crypto_wallet_type\": \"ethereum\",\n \"crypto_wallet_address\": \"${exampleEthereumAddress}\"\n }'"
/v1/crypto_wallets/authenticate:
post:
summary: Authenticate
operationId: api_crypto_wallet_v1_Authenticate
tags:
- Crypto Wallet
description: Complete the authentication of a crypto wallet by passing the signature.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/api_crypto_wallet_v1_AuthenticateRequest'
responses:
'200':
description: Successful response
content:
application/json:
schema:
$ref: '#/components/schemas/api_crypto_wallet_v1_AuthenticateResponse'
'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/crypto_wallets/authenticate\nconst stytch = require('stytch');\n\nconst client = new stytch.Client({\n project_id: '${projectId}',\n secret: '${secret}',\n});\n\nconst params = {\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n signature: \"${exampleEthereumSignature}\",\n session_duration_minutes: 60,\n};\n\nclient.CryptoWallets.Authenticate(params)\n .then(resp => { console.log(resp) })\n .catch(err => { console.log(err) });"
- lang: go
label: Go
source: "// POST /v1/crypto_wallets/authenticate\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"github.com/stytchauth/stytch-go/v17/stytch/consumer/cryptowallets\"\n\t\"github.com/stytchauth/stytch-go/v17/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 := &cryptowallets.AuthenticateParams{\n\t\tCryptoWalletType: \"ethereum\",\n\t\tCryptoWalletAddress: \"${exampleEthereumAddress}\",\n\t\tSignature: \"${exampleEthereumSignature}\",\n\t\tSessionDurationMinutes: 60,\n\t}\n\n\tresp, err := client.CryptoWallets.Authenticate(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/crypto_wallets/authenticate\npackage com.example;\n\nimport com.stytch.java.common.StytchResult;\nimport com.stytch.java.consumer.models.cryptowallets.AuthenticateRequest;\nimport com.stytch.java.consumer.StytchClient;\n\npublic class Main {\n public static void main(String[] args) {\n StytchClient.configure(\"${projectId}\", \"${secret}\");\n\n AuthenticateRequest params = new AuthenticateRequest();\n params.setCryptoWalletType(\"ethereum\");\n params.setCryptoWalletAddress(\"${exampleEthereumAddress}\");\n params.setSignature(\"${exampleEthereumSignature}\");\n params.setSessionDurationMinutes(60);\n\n Object result = StytchClient.getCryptoWallets().authenticate(params);\n if (result instanceof StytchResult.Success) {\n System.out.println(((StytchResult.Success) result).getValue());\n } else {\n System.out.println(((StytchResult.Error) result).getException());\n }\n }\n}"
- lang: kotlin
label: Kotlin
source: "// POST /v1/crypto_wallets/authenticate\npackage com.example\n\nimport com.stytch.java.consumer.StytchClient\nimport com.stytch.java.consumer.models.cryptowallets.AuthenticateRequest\n\nfun main() {\n StytchClient.configure(\n projectId = \"${projectId}\",\n secret = \"${secret}\",\n )\n\n when (\n val result =\n StytchClient.cryptoWallets.authenticate(\n AuthenticateRequest(\n cryptoWalletType = \"ethereum\",\n cryptoWalletAddress = \"${exampleEthereumAddress}\",\n signature = \"${exampleEthereumSignature}\",\n sessionDurationMinutes = 60,\n ),\n )\n ) {\n is StytchResult.Success -> println(result.value)\n is StytchResult.Error -> println(result.exception)\n }\n}\n"
- lang: javascript
label: Node.js
source: "// POST /v1/crypto_wallets/authenticate\nconst stytch = require('stytch');\n\nconst client = new stytch.Client({\n project_id: '${projectId}',\n secret: '${secret}',\n});\n\nconst params = {\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n signature: \"${exampleEthereumSignature}\",\n session_duration_minutes: 60,\n};\n\nclient.cryptoWallets.authenticate(params)\n .then(resp => { console.log(resp) })\n .catch(err => { console.log(err) });"
- lang: php
label: PHP
source: "$response = $client->crypto_wallets->authenticate([\n 'crypto_wallet_type' => 'ethereum',\n 'crypto_wallet_address' => '${exampleEthereumAddress}',\n 'signature' => '${exampleEthereumSignature}',\n 'session_duration_minutes' => 60,\n]);"
- lang: python
label: Python
source: "# POST /v1/crypto_wallets/authenticate\nfrom stytch import Client\n\nclient = Client(\n project_id=\"${projectId}\",\n secret=\"${secret}\",\n)\n\nresp = client.crypto_wallets.authenticate(\n crypto_wallet_type=\"ethereum\",\n crypto_wallet_address=\"${exampleEthereumAddress}\",\n signature=\"${exampleEthereumSignature}\",\n session_duration_minutes=60,\n)\n\nprint(resp)\n"
- lang: ruby
label: Ruby
source: "# POST /v1/crypto_wallets/authenticate\nrequire 'stytch'\n\nclient = Stytch::Client.new(\n project_id: \"${projectId}\",\n secret: \"${secret}\"\n)\n\nresp = client.crypto_wallets.authenticate(\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n signature: \"${exampleEthereumSignature}\",\n session_duration_minutes: 60\n \n)\n\nputs resp"
- lang: rust
label: Rust
source: "// POST /v1/crypto_wallets/authenticate\nuse stytch::consumer::client::Client;\nuse stytch::consumer::crypto_wallets::AuthenticateRequest;\n\nfn main() {\n let client = Client::new(\"${projectId}\", \"${secret}\").unwrap();\n let resp = client.crypto_wallets.authenticate(\n AuthenticateRequest{\n crypto_wallet_type: \"ethereum\",\n crypto_wallet_address: \"${exampleEthereumAddress}\",\n signature: \"${exampleEthereumSignature}\",\n session_duration_minutes: 60,\n ..Default::default()\n }\n ).await;\n println!(\"The response is {:?}\", resp);\n}"
- lang: bash
label: cURL
source: "# POST /v1/crypto_wallets/authenticate\ncurl --request POST \\\n --url https://test.stytch.com/v1/crypto_wallets/authenticate \\\n -u '${projectId}:${secret}' \\\n -H 'Content-Type: application/json' \\\n -d '{\n \"crypto_wallet_type\": \"ethereum\",\n \"crypto_wallet_address\": \"${exampleEthereumAddress}\",\n \"signature\": \"${exampleEthereumSignature}\",\n \"session_duration_minutes\": 60\n }'"
components:
schemas:
api_session_v1_SlackOAuthFactor:
type: object
properties:
id:
type: string
description: The unique ID of an OAuth registration.
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.
email_id:
type: string
description: The globally unique UUID of the Member's email.
required:
- id
- provider_subject
api_session_v1_HubspotOAuthFactor:
type: object
properties:
id:
type: string
description: The unique ID of an OAuth registration.
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.
email_id:
type: string
description: The globally unique UUID of the Member's email.
required:
- id
- provider_subject
api_session_v1_TwitchOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_EmbeddableMagicLinkFactor:
type: object
properties:
embedded_id:
type: string
required:
- embedded_id
api_session_v1_EmailFactor:
type: object
properties:
email_id:
type: string
description: The globally unique UUID of the Member's email.
email_address:
type: string
description: The email address of the Member.
required:
- email_id
- email_address
api_device_history_v1_DeviceInfo:
type: object
properties:
visitor_id:
type: string
description: The `visitor_id` (a unique identifier) of the user's device. See the [Device Fingerprinting documentation](https://stytch.com/docs/fraud/guides/device-fingerprinting/fingerprints) for more details on the `visitor_id`.
visitor_id_details:
$ref: '#/components/schemas/api_device_history_v1_DeviceAttributeDetails'
description: Information about the `visitor_id`.
ip_address:
type: string
description: The IP address of the user's device.
ip_address_details:
$ref: '#/components/schemas/api_device_history_v1_DeviceAttributeDetails'
description: Information about the `ip_address`.
ip_geo_city:
type: string
description: The city where the IP address is located.
ip_geo_region:
type: string
description: The region where the IP address is located.
ip_geo_country:
type: string
description: The country code where the IP address is located.
ip_geo_country_details:
$ref: '#/components/schemas/api_device_history_v1_DeviceAttributeDetails'
description: Information about the `ip_geo_country`.
required:
- visitor_id
api_session_v1_SteamOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
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_session_v1_BitbucketOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_OAuthAccessTokenExchangeFactor:
type: object
properties:
client_id:
type: string
description: The ID of the Connected App client.
required:
- client_id
api_session_v1_DiscordOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_TrustedAuthTokenFactor:
type: object
properties:
token_id:
type: string
description: The ID of the trusted auth token.
required:
- token_id
api_session_v1_AppleOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_ShopifyOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_SalesforceOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_AmazonOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_attribute_v1_Attributes:
type: object
properties:
ip_address:
type: string
description: The IP address of the user.
user_agent:
type: string
description: The user agent of the User.
api_session_v1_YahooOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_TwitterOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
api_session_v1_AuthenticationFactorDeliveryMethod:
type: string
enum:
- email
- sms
- whatsapp
- embedded
- oauth_google
- oauth_microsoft
- oauth_apple
- webauthn_registration
- authenticator_app
- oauth_github
- recovery_code
- oauth_facebook
- crypto_wallet
- oauth_amazon
- oauth_bitbucket
- oauth_coinbase
- oauth_discord
- oauth_figma
- oauth_gitlab
- oauth_instagram
- oauth_linkedin
- oauth_shopify
- oauth_slack
- oauth_snapchat
- oauth_spotify
- oauth_steam
- oauth_tiktok
- oauth_twitch
- oauth_twitter
- knowledge
- biometric
- sso_saml
- sso_oidc
- oauth_salesforce
- oauth_yahoo
- oauth_hubspot
- imported_auth0
- oauth_exchange_slack
- oauth_exchange_hubspot
- oauth_exchange_github
- oauth_exchange_google
- impersonation
- oauth_access_token_exchange
- trusted_token_exchange
api_session_v1_AuthenticationFactorType:
type: string
enum:
- magic_link
- otp
- oauth
- webauthn
- totp
- crypto
- password
- signature_challenge
- sso
- imported
- recovery_codes
- email_otp
- impersonated
- trusted_auth_token
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_session_v1_GoogleOAuthFactor:
type: object
properties:
id:
type: string
description: The unique ID of an OAuth registration.
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.
email_id:
type: string
description: The globally unique UUID of the Member's email.
required:
- id
- provider_subject
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_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_session_v1_SpotifyOAuthFactor:
type: object
properties:
id:
type: string
provider_subject:
type: string
email_id:
type: string
required:
- id
- provider_subject
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_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.\n 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
# --- truncated at 32 KB (63 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/stytch/refs/heads/main/openapi/stytch-crypto-wallet-api-openapi.yml