Dynamic Settings API
The Settings API from Dynamic — 9 operation(s) for settings.
The Settings API from Dynamic — 9 operation(s) for settings.
openapi: 3.0.1
info:
title: Dashboard Allowlists Settings 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: Settings
paths:
/environments/{environmentId}/settings/exchanges:
get:
operationId: getEnvironmentExchanges
tags:
- Settings
summary: Get the exchanges for an environment
parameters:
- $ref: '#/components/parameters/environmentId'
responses:
'200':
description: List of exchanges for this project environment
content:
application/json:
schema:
$ref: '#/components/schemas/ExchangeResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
post:
operationId: createExchange
tags:
- Settings
summary: Creates a new exchange for the project environment
parameters:
- $ref: '#/components/parameters/environmentId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExchangeCreateRequest'
responses:
'201':
description: Successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/Exchange'
'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'
/settings/exchanges/{exchangeId}:
get:
operationId: getExchange
tags:
- Settings
summary: Gets an exchange
parameters:
- $ref: '#/components/parameters/exchangeId'
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/Exchange'
'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: deleteExchange
tags:
- Settings
summary: Delete an exchange by exchangeId
parameters:
- $ref: '#/components/parameters/exchangeId'
responses:
'204':
description: successful operation
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
security:
- bearerAuth: []
/settings/exchanges/{exchangeId}/enable:
put:
summary: Enable the exchange for the environment
operationId: enableExchange
tags:
- Settings
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/exchangeId'
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/Exchange'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'500':
$ref: '#/components/responses/InternalServerError'
/settings/exchanges/{exchangeId}/disable:
put:
summary: Disable the exchange for the environment
operationId: disableExchange
tags:
- Settings
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/exchangeId'
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/Exchange'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
/environments/{environmentId}/settings/providers:
get:
operationId: getEnvironmentProviders
tags:
- Settings
summary: Get the providers for an environment
parameters:
- $ref: '#/components/parameters/environmentId'
responses:
'200':
description: List of providers for this project environment
content:
application/json:
schema:
$ref: '#/components/schemas/ProvidersResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
post:
operationId: createProvider
tags:
- Settings
summary: Creates a new provider for the project environment
parameters:
- $ref: '#/components/parameters/environmentId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderCreateRequest'
responses:
'201':
description: Successfully created
content:
application/json:
schema:
$ref: '#/components/schemas/Provider'
'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}/settings/providers/urls:
get:
operationId: getEnvironmentProviderUrls
tags:
- Settings
summary: Get the URLs for the environment providers
parameters:
- $ref: '#/components/parameters/environmentId'
responses:
'200':
description: List of OAuth urls for the environment providers
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderUrlsResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
/settings/providers/{providerId}:
get:
operationId: getProvider
tags:
- Settings
summary: Gets a provider
parameters:
- $ref: '#/components/parameters/providerId'
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/Provider'
'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'
put:
operationId: updateProvider
tags:
- Settings
summary: Updates a provider
parameters:
- $ref: '#/components/parameters/providerId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ProviderUpdateRequest'
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/Provider'
'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: deleteProvider
tags:
- Settings
summary: Delete a provider by providerId
parameters:
- $ref: '#/components/parameters/providerId'
responses:
'204':
description: successful operation
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
security:
- bearerAuth: []
/settings/providers/{providerId}/enable:
put:
summary: Enable the provider for the environment
operationId: enableProvider
tags:
- Settings
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/providerId'
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/Provider'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'500':
$ref: '#/components/responses/InternalServerError'
/settings/providers/{providerId}/disable:
put:
summary: Disable the provider for the environment
operationId: disableProvider
tags:
- Settings
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/providerId'
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/Provider'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServerError'
components:
schemas:
caip2:
description: CAIP-2 Chain ID (https://github.com/ChainAgnostic/CAIPs/blob/main/CAIPs/caip-2.md)
type: string
pattern: ^[-a-z0-9]{3,8}:[-_a-zA-Z0-9]{1,32}$
minLength: 5
maxLength: 41
example: eip155:1
ProviderCreateRequest:
type: object
description: Request body to create a new provider. The provider will be not enabled by default.
required:
- provider
properties:
provider:
$ref: '#/components/schemas/ProviderEnum'
clientId:
description: 'Standard OAuth client ID. For more information, see: https://www.oauth.com/oauth2-servers/client-registration/client-id-secret/. For Apple, this is also known as the Service ID.'
type: string
clientSecret:
description: 'Standard OAuth client secret key. For more information, see: https://www.oauth.com/oauth2-servers/client-registration/client-id-secret/'
type: string
providerProjectId:
description: Some providers require additional information, typically called a project ID or site ID
type: string
defaultChainId:
description: The default chain id the SDK should use
type: integer
defaultChain:
$ref: '#/components/schemas/caip2'
keyExportUrl:
description: The url of the site to go to export wallets private keys
type: string
termsUrl:
description: The url of the terms and conditions or privacy policy needed to be shown to the client when creating a new provider that requires terms and conditions to be signed before starting configuration.
type: string
useDynamicCredentials:
type: boolean
scopes:
description: Optional custom space-delimited list of Oauth scopes for the social provider
type: string
appleKeyId:
description: Key ID required for Apple Oauth2 applications. This is the identifier for a private key.
type: string
appleTeamId:
description: Team ID required for Apple Oauth2 applications. This is associated with the Apple developer membership account.
type: string
shopifyStore:
description: Shopify store required for Shopify Oauth2 applications.
type: string
accountSid:
description: Required to initialize Twilio provider.
type: string
twilioNumber:
description: Required to initialize Twilio provider. Phone number used to send SMS messages.
type: string
twilioVerifyServiceSid:
description: Twilio Verify Service SID for SMS verification.
type: string
enabledCountries:
type: array
items:
$ref: '#/components/schemas/SmsCountryCode'
sendgridIpPoolName:
description: The IP pool name for the SendGrid provider.
type: string
multichainAccountAbstractionProviders:
type: array
items:
type: object
properties:
clientId:
type: string
chain:
type: string
default:
type: boolean
required:
- clientId
- chain
entryPointVersion:
$ref: '#/components/schemas/ProviderEntryPointVersionEnum'
kernelVersion:
$ref: '#/components/schemas/ProviderKernelVersionEnum'
ecdsaProviderType:
$ref: '#/components/schemas/ecdsaValidatorOptions'
enableKernelV3Migration:
type: boolean
enableEIP7702:
type: boolean
factoryAddress:
type: string
description: The factory address for the provider (currently only used for zksync)
paymasterAddress:
type: string
description: The paymaster address for the provider (currently only used for zksync)
passkeyAddress:
type: string
description: The passkey address for the provider (currently only used for zksync)
sessionAddress:
type: string
description: The session address for the provider (currently only used for zksync)
zerodevBundlerProvider:
$ref: '#/components/schemas/ZerodevBundlerProvider'
zerodevBundlerRpcUrl:
type: string
zerodevPaymasterRpcUrl:
type: string
zerodevKernelDelegationAddress:
type: string
domain:
type: string
description: The subdomain for the provider (mostly used for SSO)
returnUrl:
type: string
description: URL to return to after completion
cancelUrl:
type: string
description: URL to return to when cancelled
Forbidden:
type: object
properties:
error:
type: string
example: Access Forbidden
MergeUserConflict:
type: object
description: Contains a merge conflict between two users with different values for the same user field data
required:
- field
- fromUser
- currentUser
properties:
field:
$ref: '#/components/schemas/ProjectSettingsKyc'
fromUser:
$ref: '#/components/schemas/MergeUser'
currentUser:
$ref: '#/components/schemas/MergeUser'
ProviderUrl:
type: object
required:
- provider
- authorizationUrl
- redirectUrl
properties:
provider:
$ref: '#/components/schemas/ProviderEnum'
authorizationUrl:
description: If the provider supports Oauth 2, this field will contain the URL of the login and authorization where a user can authorize the applciation to gain access to their provider account
type: string
redirectUrl:
description: If the provider supports Oauth 2, this field will contain the URL of redirect or callback URL which will need to be provided to the Oauth provider to properly configure your App tp talk with Dynamic
type: string
scopes:
description: Optional custom space-delimited list of Oauth scopes for the social provider
type: string
scopesRefUrl:
description: Reference URL for custom scopes of OAuth provider.
type: string
EmbeddedWalletVersionEnum:
type: string
enum:
- V1
- V2
- V3
CountryCode:
type: string
nullable: true
description: Standard ISO 3166-1 alpha-2 two-letter country code
pattern: ^[A-Z]{2}$
example: US
maxLength: 255
ExchangeCreateRequest:
type: object
description: Request body to create a new exchange. The exchange will be not enabled by default.
required:
- exchange
properties:
exchange:
$ref: '#/components/schemas/ExchangeKeyEnum'
socialProvider:
$ref: '#/components/schemas/ProviderEnum'
onRampProvider:
$ref: '#/components/schemas/ProviderEnum'
CoinbaseMpcWalletProperties:
type: object
properties:
claimed:
type: boolean
description: Dynamic pregenerated this wallet and stored the passcode
source:
$ref: '#/components/schemas/PasswordSourceTypeEnum'
MergeUser:
type: object
description: Contains the current field value for the user.
required:
- userId
- value
properties:
userId:
$ref: '#/components/schemas/uuid'
value:
$ref: '#/components/schemas/NonEmptyStringWith255MaxLength'
UnprocessableEntityErrorCode:
type: string
enum:
- email_cannot_be_null
- exchange_cannot_be_enabled
- transfer_amount_too_small
- transfer_address_not_whitelisted
- invalid_scopes
- unknown_transfer_error
- transfer_mfa_required
- transfer_mfa_failed
- invalid_transfer_funds
- invalid_transfer_currency
- invalid_exchange_provider
- invalid_transfer_network
- invalid_email
- email_already_exists
- allowlist_already_exists
- allowlist_entry_already_exists
- reassign_wallet_error
- reassign_wallet_confirm
- members_cannot_delete_themself
- username_already_exists
- wrong_email_verification_token
- wrong_sms_verification_token
- invalid_email_verification
- invalid_sms_verification
- invalid_verification
- invalid_position
- too_many_sms_verification_attempts
- too_many_email_verification_attempts
- too_many_verification_attempts
- organization_name_already_exists
- project_name_already_exists
- wallet_not_deployed
- email_verification_required
- phone_verification_required
- invite_address_required
- provider_not_available
- forbidden_unlink_request
- invalid_unlink_request
- too_many_api_tokens
- lock_timeout
- lock_too_many_attempts
- nft_token_gating_not_supported_for_chain
- empty_chain_name
- no_enabled_email_provider
- no_enabled_sms_provider
- invalid_key_export_url
- invalid_dynamic_props
- too_many_requests
- too_many_organizations_for_user
- too_many_projects_for_organization
- email_associated_with_different_provider
- user_has_already_account_with_email
- user_has_already_account_with_phone_number
- other_verify_failure
- email_tied_to_embedded_wallet
- invalid_invite
- social_account_already_exists
- invalid_email_address
- invalid_gate
- conflicting_embedded_wallet_providers
- invalid_user
- invalid_cors_origins
- invalid_mobile_deeplink_urls
- unauthorized_mobile_deeplink_url
- invalid_private_key_format
- invalid_embedded_wallet_settings
- wallet_not_support_passkey
- recovery_email_unavailable_or_invalid
- connect_error
- invalid_wallet_name
- invalid_wallet_address
- email_recovery_disabled
- no_compatible_wallet_service_enabled
- missing_aa_project_id
- linked_embedded_wallet
- invalid_mpc_environment
- invalid_regex
- repeated_options
- missing_phone_number_or_email
- duplicate_exists
- mfa_device_not_found
- mfa_invalid_code
- mfa_invalid_request
- invalid_phone
- gate_exists
- invalid_embedded_wallet_chains_configuration
- merge_accounts_confirmation
- merge_accounts_invalid
- invalid_wallet_id
- unable_to_fetch_balances
- cannot_switch_to_unique
- custom_field_data_not_unique
- metadata_size_exceeded
- invalid_custom_hostname
- blocked_user_cannot_transfer_wallet
- feature_not_enabled_in_suborg
- invalid_username
- invalid_external_auth
- invalid_chain_address_match
- invalid_update
- cannot_delete_last_project
- no_hd_wallet_found
- wallet_account_exists_for_chain
- too_many_embedded_wallets_for_user
- too_many_embedded_wallets_per_chain_for_user
- invalid_session_public_key
- custom_field_not_unique
- invalid_aa_project_configuration
- no_v1_embedded_wallet_found
- embedded_wallet_address_already_linked
- key_share_already_backed_up
- invalid_key_shares_length
- wallet_service_connection_error
- no_global_wallet_found
- invalid_metadata_value
- max_passkeys_per_user
- passkey_not_found
- cannot_delete_passkey_linked_to_embedded_wallet
- cannot_delete_last_sign_in_verified_credential
WaasWalletProperties:
type: object
properties:
keyShares:
type: array
items:
$ref: '#/components/schemas/WalletKeyShareInfo'
thresholdSignatureScheme:
$ref: '#/components/schemas/ThresholdSignatureScheme'
derivationPath:
type: string
description: The derivation path for the wallet
settings:
$ref: '#/components/schemas/WaasWalletSettings'
version:
$ref: '#/components/schemas/EmbeddedWalletVersionEnum'
UnprocessableEntity:
type: object
properties:
error:
type: string
example: Resources already exists for this Object
code:
$ref: '#/components/schemas/UnprocessableEntityErrorCode'
payload:
$ref: '#/components/schemas/UnprocessableEntityErrorPayload'
required:
- error
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
nullable: true
oauth_account_id:
type: string
nullable: true
phoneNumber:
description: This field contains the phone number in the country. This could also contain the area code within a country.
example: '9171113333'
type: string
phoneCountryCode:
description: This field contains the phone international country code. See https://countrycode.org/
example: '1'
type: string
isoCountryCode:
description: ISO-3166 two-character country code. See https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes
example: US
type: string
oauth_account_photos:
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
nullable: true
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.
InternalServerError:
type: object
properties:
error:
type: string
example: Internal Server Error
ProviderUpdateRequest:
type: object
description: Request body to update oauth properties and other metadata about a provider.
properties:
clientId:
description: 'Standard OAuth client ID. For more information, see: https://www.oauth.com/oauth2-servers/client-registration/client-id-secret/'
type: string
clientSecret:
description: 'Standard OAuth client secret key. For more information, see: https://www.oauth.com/oauth2-servers/client-registration/client-id-secret/'
type: string
providerProjectId:
description: Some providers require additional information, typically called a project ID or site ID
type: string
defaultChainId:
description: The default chain id the SDK should use
type: integer
defaultChain:
$ref: '#/components/schemas/caip2'
keyExportUrl:
description: The url of the site to go to export wallets private keys
type: string
useDynamicCredentials:
type: boolean
scopes:
description: Optional custom space-delimited list of Oauth scopes for the social provider
type: string
appleKeyId:
description: Key ID required for Apple Oauth2 applications. This is the identifier for a private key.
type: string
appleTeamId:
description: Team ID required for Apple Oauth2 applications. This is associated with the Apple developer membership account.
type: string
shopifyStore:
description: Shopify store required for Shopify Oauth2 applications.
type: string
domain:
type: string
description: The subdomain for the provider (mostly used for SSO)
accountSid:
description: Required to initialize Twilio provider.
type: string
twilioNumber:
description: Required to initialize Twilio provider. Phone number used to send SMS messages.
type: string
twilioVerifyServiceSid:
description: Twilio Verify Service SID for SMS verification.
type: string
enabledCountries:
type: array
items:
$ref: '#/components/schemas/SmsCountryCode'
sendgridIpPoolName:
description: The IP pool name for the SendGrid provider.
type: string
multichainAccountAbstractionProviders:
type: array
items:
type: object
properties:
clientId:
type: string
chain:
type: string
default:
type: boolean
required:
- clientId
- chain
entryPointVersion:
$ref: '#/components/schemas/ProviderEntryPointVersionEnum'
kernelVersion:
$ref: '#/components/schemas/ProviderKernelVersionEnum'
ecdsaProviderType:
$ref: '#/components/schemas/ecdsaValidatorOptions'
enableKernelV3Migration:
type: boolean
enableEIP7702:
type: boolean
factoryAddress:
type: string
description: The factory address for the provider (currently only used for zksync)
paymasterAddress:
type: string
description: The paymaster address for the provider (currently only used for zksync)
passkeyAddress:
type: string
description: The passkey address for the provider (currently only used for zksync)
sessionAddress:
type: string
description: The session address for the provider (currently only used for zksync)
zerodevBundlerProvider:
$ref: '#/components/schemas/ZerodevBundlerProvider'
zerodevBundlerRpcUrl:
type: string
zerodevPaymasterRpcUrl:
type: string
zerodevKernelDelegationAddress:
type: string
returnUrl:
type: string
description: URL to return to after completion
cancelUrl:
type: string
description: URL to return to when cancelled
ProjectSettingsKyc:
type: object
properties:
name:
type: string
required:
type: boolean
enabled:
type: boolean
unique:
type: boolean
verify:
type: boolean
type:
$ref: '#/components/schemas/KycFieldType'
validationRules:
$ref: '#/components/schemas/CustomFieldValidationRules'
validationType:
$ref: '#/components/schemas/CustomFieldType'
label:
type: string
position:
type: number
required:
- name
- required
- enabled
- unique
- verify
ThresholdSignatureScheme:
type: string
enum:
- TWO_OF_TWO
- TWO_OF_THREE
- THREE_OF_FIVE
OptionalNullableNonEmptyStringWith255MaxLength:
type: string
pattern: ^$|^(?=\S)[\p{L}\p{N} _.,:!?&%@\/+-]+(?<=\S)$
example: An example name
nullable: true
maxLength: 255
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:
ty
# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dynamic-xyz/refs/heads/main/openapi/dynamic-xyz-settings-api-openapi.yml