openapi: 3.0.1 info: title: Dashboard Allowlists Environments 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: Environments paths: /environments/{environmentId}: get: summary: Find an environment by ID operationId: getEnvironmentById tags: - Environments parameters: - $ref: '#/components/parameters/environmentId' responses: '200': description: Environment response content: application/json: schema: $ref: '#/components/schemas/ProjectEnvironment' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': description: Not found '500': $ref: '#/components/responses/InternalServerError' security: - bearerAuth: [] put: operationId: updateProjectSettings tags: - Environments summary: Updates the environment settings parameters: - $ref: '#/components/parameters/environmentId' requestBody: content: application/json: schema: $ref: '#/components/schemas/ProjectSettings' responses: '200': description: Project settings response content: application/json: schema: $ref: '#/components/schemas/ProjectSettings' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' '500': $ref: '#/components/responses/InternalServerError' security: - bearerAuth: [] /environments/{environmentId}/statistics/visitors: get: operationId: getVisitorsCountByEnvironmentId tags: - Environments summary: Get the unique number of visitors for an environment by environment ID parameters: - $ref: '#/components/parameters/environmentId' responses: '200': description: Environment Unique Visitor Count Response content: application/json: schema: $ref: '#/components/schemas/EnvironmentVisitorsResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/InternalServerError' security: - bearerAuth: [] /environments/{environmentId}/keys: get: operationId: getKeysForEnvironment tags: - Environments summary: Get keys for an environment given environmentId parameters: - $ref: '#/components/parameters/environmentId' responses: '200': description: Environment Key response content: application/json: schema: $ref: '#/components/schemas/KeyResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': description: Key not found '500': description: Error response security: - bearerAuth: [] /projects/{projectId}/environments: get: operationId: getEnvironmentsByProjectId tags: - Environments summary: Get Live and Sandbox environments by projectId parameters: - $ref: '#/components/parameters/projectId' responses: '200': description: Project environments response content: application/json: schema: $ref: '#/components/schemas/EnvironmentsResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/InternalServerError' security: - bearerAuth: [] components: schemas: SdkViewSectionType: type: string enum: - email - emailAndPhone - phone - separator - social - text - wallet - passkey 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 NetworkConfiguration: type: object properties: lcdUrl: type: string example: https://lcd.osmosis.zone description: A light client, compared to a full node, tracks only pieces of certain information on a blockchain. Light clients do not track the entire state of a blockchain and also do not contain every transaction/block of a chain. chainName: type: string description: '[Deprecated] use `name` property instead' example: Ethereum Mainnet key: type: string example: ethereum name: type: string example: Ethereum Mainnet shortName: type: string example: ETH isTestnet: type: boolean example: false chain: type: string example: ETH chainId: type: string example: '1' nameService: $ref: '#/components/schemas/NameService' networkId: type: string example: '1' iconUrls: type: array items: type: string nativeCurrency: $ref: '#/components/schemas/NativeCurrency' rpcUrls: type: array items: type: string example: https://mainnet.infura.io/v3/ privateCustomerRpcUrls: type: array description: Contains the client private RPC urls items: type: string example: https://mainnet.infura.io/v3/ blockExplorerUrls: type: array items: type: string example: https://etherscan.io/ vanityName: type: string example: Ethereum bech32Prefix: type: string example: cosmos genesisHash: type: string example: 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp cluster: type: string example: mainnet, devnet, etc required: - name - shortName - chain - chainId - networkId - iconUrls - nativeCurrency - rpcUrls - blockExplorerUrls SignInProviderEnum: type: string description: The 'turnkey' value is deprecated and will be removed in a future version. enum: - dynamic - magicLink - blocto - turnkey - coinbaseWaas 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 KeyResponse: type: object properties: key: $ref: '#/components/schemas/Key' 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 SecurityNotifications: type: object properties: waasPrivateKeyExport: type: boolean description: Send email notification when a user exports their embedded wallet private key. Defaults to true. waasSignedTransaction: type: boolean description: Send email notification when a transaction is signed with an embedded wallet. Defaults to true. NativeCurrency: type: object properties: decimals: type: number example: '18' name: type: string example: Ether symbol: type: string example: ETH denom: type: string example: uatom iconUrl: type: string pricingProviderTokenId: type: string required: - decimals - name - symbol ChainConfiguration: type: object required: - name - enabled - primary properties: name: type: string enabled: type: boolean primary: type: boolean ProjectSettingsGeneral: type: object properties: displayName: $ref: '#/components/schemas/OptionalNonEmptyString' supportEmail: type: string format: email maxLength: 255 nullable: true supportText: type: string maxLength: 255 nullable: true appLogo: type: string format: url nullable: true imageUserNotInAccessList: type: string format: url nullable: true imageUserInAccessList: type: string format: url nullable: true supportUrls: $ref: '#/components/schemas/ProjectSettingsGeneralApps' collectUserDataWelcomeHeader: type: string maxLength: 255 nullable: true collectUserDataWelcomeMessage: type: string maxLength: 100 nullable: true skipOptionalKYCFieldDuringOnboarding: type: boolean emailCompanyName: $ref: '#/components/schemas/OptionalNonEmptyString' ProjectSettingsDesign: type: object properties: modal: $ref: '#/components/schemas/ProjectSettingsDesignModal' button: $ref: '#/components/schemas/ProjectSettingsDesignButton' widget: $ref: '#/components/schemas/ProjectSettingsDesignWidget' WaasWalletSettings: type: object properties: hasDeniedDelegatedAccess: type: boolean shouldRefreshOnNextSignOn: type: boolean reshareOnNextSignOn: $ref: '#/components/schemas/ThresholdSignatureScheme' revokeOnNextSignOn: type: boolean EnvironmentsResponse: type: object properties: environments: type: object properties: live: $ref: '#/components/schemas/ProjectEnvironment' sandbox: $ref: '#/components/schemas/ProjectEnvironment' required: - live - sandbox required: - environments NonEmptyIsoCountryCode: type: string pattern: ^[a-zA-Z]{2,4}\d?$ maxLength: 4 example: US EnvironmentEnum: type: string enum: - sandbox - live WalletKeyShareInfo: type: object required: - id - backupLocation - passwordEncrypted properties: id: $ref: '#/components/schemas/uuid' backupLocation: type: string passwordEncrypted: type: boolean externalKeyShareId: $ref: '#/components/schemas/uuid' ecdsaValidatorOptions: type: string enum: - zerodev_signer_to_ecdsa - zerodev_multi_chain UnprocessableEntityErrorPayload: type: object description: Contains information which the integrating client of this API can use to tailor an experience to a customer to fix the underlying issue that triggered this error. properties: email: type: string format: email example: joe@email.com loginProvider: $ref: '#/components/schemas/ProviderEnum' embeddedWalletName: type: string embeddedSocialSigninProvider: $ref: '#/components/schemas/ProviderEnum' mergeConflicts: $ref: '#/components/schemas/MergeConflicts' additionalMessages: type: array items: type: string JwtVerifiedCredentialFormatEnum: type: string enum: - blockchain - email - oauth - passkey - phoneNumber - externalUser NameServiceSdkSettings: type: object required: - evm properties: evm: type: object properties: domain: type: string description: Top-level ENS domain for the environment for EVM embedded wallets in this environment SupportedSecurityMethods: type: object properties: passkey: $ref: '#/components/schemas/SupportedSecurityMethod' email: $ref: '#/components/schemas/SupportedSecurityMethod' password: $ref: '#/components/schemas/SupportedSecurityMethod' NameService: type: object properties: registry: type: string example: '0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e' 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' ProjectSettings: type: object properties: environmentName: $ref: '#/components/schemas/EnvironmentEnum' chains: type: array items: $ref: '#/components/schemas/ProjectSettingsChains' customFields: type: array items: $ref: '#/components/schemas/ProjectSettingsKyc' kyc: type: array items: $ref: '#/components/schemas/ProjectSettingsKyc' design: $ref: '#/components/schemas/ProjectSettingsDesign' general: $ref: '#/components/schemas/ProjectSettingsGeneral' privacy: $ref: '#/components/schemas/ProjectSettingsPrivacy' providers: type: array description: External integrations like e-mail, social credentials, mpc providers, etc. items: $ref: '#/components/schemas/Provider' exchanges: type: array description: exchanges such as coinbase, binance, etc items: $ref: '#/components/schemas/Exchange' sdk: $ref: '#/components/schemas/ProjectSettingsSdk' security: $ref: '#/components/schemas/ProjectSettingsSecurity' networks: type: array items: $ref: '#/components/schemas/NetworkConfigurationResponse' required: - chains - kyc - design - general - privacy - sdk - security InternalServerError: type: object properties: error: type: string example: Internal Server Error ProviderEnum: type: string description: The 'turnkey' value is deprecated and will be removed in a future version. enum: - emailOnly - magicLink - apple - bitbucket - coinbasesocial - discord - epicgames - facebook - farcaster - github - gitlab - google - instagram - linkedin - microsoft - twitch - twitter - blocto - banxa - coinbaseOnramp - cryptoDotCom - dynamic - alchemy - zerodev - telegram - turnkey - coinbaseWaas - sms - spotify - tiktok - line - steam - shopify - zksync - kraken - blockaid - passkey - okta - sendgrid - resend OptionalNonEmptyUrl: type: string pattern: ^$|^(https?:\/\/)?[a-z0-9]+([-.]+[a-z0-9]+)*\.[a-z]{2,10}([0-9]{1,5})?(\/.*)?$ example: https://website-sample.com ExternalAuth: type: object properties: enabled: type: boolean iss: $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength' aud: $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength' jwksUrl: $ref: '#/components/schemas/OptionalNonEmptyUrl' cookieName: $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength' ProjectSettingsSdkWaasDelegatedAccess: type: object properties: enabled: type: boolean description: Whether delegated access is enabled for the environment. If enabled, developer can trigger user to accept delegated access. promptUsersOnSignIn: type: boolean description: Prompt for delegated access when user logs in. requiresDelegation: type: boolean description: If enabled, users will be required to delegate access. MfaBackupCodeAcknowledgement: type: string nullable: true enum: - pending - complete KycFieldType: type: string enum: - standard - custom NameServiceData: type: object properties: avatar: type: string name: type: string FeatureFlags: type: object required: - connectOnlyMultiAsset - enableExchanges properties: connectOnlyMultiAsset: type: boolean enableExchanges: type: boolean SdkViewSectionAlignment: type: string enum: - center - left - right ProjectSettingsSdk: type: object properties: nameService: $ref: '#/components/schemas/NameServiceSdkSettings' featureFlags: $ref: '#/components/schemas/FeatureFlags' emailSignIn: type: object properties: signInProvider: $ref: '#/components/schemas/SignInProviderEnum' socialSignIn: type: object properties: signInProvider: $ref: '#/components/schemas/SignInProviderEnum' providers: type: array items: $ref: '#/components/schemas/SocialSignInProvider' exchangeOptions: type: array items: $ref: '#/components/schemas/ExchangeOption' multiWallet: type: boolean multiWalletUnlinkDisabled: type: boolean mobile: $ref: '#/components/schemas/MobileSettings' confirmWalletTransfers: type: boolean onrampFunding: type: boolean passkeyEmbeddedWalletEnabled: type: boolean description: passkeyEmbeddedWalletEnabled is deprecated as of v0.19. Please enable embedded wallets using the provider API. deprecated: true automaticEmbeddedWalletCreation: type: boolean passkeyEmbeddedWalletRecoveryEnabled: type: boolean embeddedWalletSecurityMethods: type: array description: Embedded wallet authenticator security methods required upon creation of the embedded wallet at onboarding items: $ref: '#/components/schemas/EmbeddedWalletSecurityMethod' embeddedWallets: type: object properties: automaticEmbeddedWalletCreation: type: boolean description: When true embedded wallets will be generated during onboarding for the users. When false customer needs to trigger the creation. automaticEmbeddedWalletCreationForExternal: type: boolean description: When true embedded wallets will be created for external wallets during sign in. When false embedded wallets are not generated for external wallets during sign in. showEmbeddedWalletActionsUI: type: boolean description: When true users will see embedded wallets action confirmation views. emailRecoveryEnabled: type: boolean description: When true users will be able to start recovery for their accounts. forceAuthenticatorAtSignup: type: boolean description: When true user will be prompted to add a security method during onboarding. When false user will need to add a security method before a transaction allowSkippingAuthenticatorAtSignup: type: boolean description: When combined with forceAuthenticatorAtSignup it allows user to skip adding a security method during onboarding. User will need to add it before a transaction. sessionKeyDuration: $ref: '#/components/schemas/Duration' supportedSecurityMethods: $ref: '#/components/schemas/SupportedSecurityMethods' chainConfigurations: $ref: '#/components/schemas/ChainConfigurations' domainEnabledByProvider: type: boolean description: When a client domain needs to be whitelisted explicitly by one of our embedded wallet providers, this will be true when Dynamic has confirmed that this is the case. defaultWalletVersion: $ref: '#/components/schemas/EmbeddedWalletVersionEnum' promptForKeyExport: type: boolean description: When true, the user will be prompted to export their private key after creating a wallet. transactionSimulation: type: boolean description: When true, user transactions will show asset transfers in the Confirmation UI. svmGasSponsorshipEnabled: type: boolean description: When true, network fees for Solana embedded wallet transactions will be sponsored. waas: type: object properties: allowMultipleWaasWalletsPerChain: type: boolean description: When true, users can have multiple WAAS wallets per chain. passcodeRequired: type: boolean description: When true, passcode security method is forced for v3 embedded wallets. Usually it is an optional security method. onSignUp: type: object properties: promptBackupOptions: type: boolean description: When true, backup options are shown during sign up for v3 embedded wallets. promptClientShareExport: type: boolean description: When true, users will be prompted to export their client share. required: - promptBackupOptions - promptClientShareExport backupOptions: type: array items: $ref: '#/components/schemas/WaasBackupOptionsEnum' iCloud: type: object description: Apple iCloud configuration for key share backup. properties: containerIdentifier: type: string description: The iCloud container identifier for storing key share backups. apiToken: type: string description: CloudKit Web Services API token for public operations. environment: type: string enum: - development - production description: The CloudKit environment to use. relayUrl: type: string description: The URL of the relay server for the environment. If not provided, the default relay server will be used. delegatedAccessEndpoint: type: string description: The URL of the delegated access endpoint for WAAS. If not provided, no delegated access endpoint will be used. delegatedAccess: $ref: '#/components/schemas/ProjectSettingsSdkWaasDelegatedAccess' enableForwardMPCClient: type: boolean description: When true, the sdk will utilize the forward MPC client for select MPC operations. customKeyshareRelayBaseUrl: type: string description: When applicable, this is the custom base URL hostname to use for the WAAS keyshare backup relay. If not provided, the default will be used. exportDisabled: type: boolean description: When true, private key exports are disabled at both API and wallet enclave levels. When false (default), users can export their private keys from v3 embedded wallets. required: - passcodeRequired - onSignUp - backupOptions walletConnect: type: object properties: projectId: type: string v2Enabled: type: boolean walletProjectId: type: string confirmEmailProviderForVerify: type: boolean displayDynamicMessaging: type: boolean hideNetworkInDynamicWidget: type: boolean preventOrphanedAccounts: type: boolean views: type: array description: Configs used to create the views in the sdk. items: $ref: '#/components/schemas/SdkView' accountAbstraction: type: object properties: allWallets: description: If set to false, will create smart wallets for embedded wallets only. type: boolean allUsers: description: If set to false, will create smart wallets for new users only. type: boolean separateSmartWalletAndSigner: description: if set to false, only smart wallet will be in user wallets list. type: boolean enablePasskeys: description: If set to false, will disable passkeys (if specified) for zksync wallets. type: boolean blockEmailSubaddresses: type: boolean enableMultiAsset: type: boolean showFiat: type: boolean disabledWalletConnectors: type: array description: Ids of wallet connectors to filter out from available options in the sdk items: $ref: '#/components/schemas/WalletConnectorKey' funding: $ref: '#/components/schemas/Funding' OptionalNonEmptyString: type: string pattern: ^$|^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'|]+(?<=\S)$ example: An example name ZerodevBundlerProvider: type: string enum: - STACKUP - PIMLICO - ALCHEMY - GELATO SdkViewType: type: string enum: - login MergeConflicts: type: object description: Contains information needed for the SDK to surface merge conflicts when attempting to merge information from one user to another required: - fromUser - conflicts properties: fromUser: $ref: '#/components/schemas/SdkUser' conflicts: type: array items: $ref: '#/components/schemas/MergeUserConflict' Key: type: object properties: id: $ref: '#/components/schemas/uuid' publicKey: type: string description: Base64-encoded public key of the corresponding private key used to encode a Dynamic JWT ProviderAgreement: description: Reference to the user that accepted the terms and conditions, if one is necessary for this provider. type: object required: - termsUrl - userId - email - createdAt properties: 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 maxLength: 255 email: type: string format: email maxLength: 255 userId: $ref: '#/components/schemas/uuid' createdAt: type: string format: date-time ProjectSettingsSecurity: type: object properties: jwtDuration: $ref: '#/components/schemas/Duration' hCaptcha: $ref: '#/components/schemas/HCaptchaSettings' mfa: $ref: '#/components/schemas/MFASettings' auth: $ref: '#/components/schemas/AuthSettings' externalAuth: $ref: '#/components/schemas/ExternalAuth' environmentLocked: type: boolean description: When enabled, all SDK requests to this environment will be blocked. notifications: $ref: '#/components/schemas/SecurityNotifications' WalletProperties: anyOf: - $ref: '#/components/schemas/TurnkeyWalletProperties' - $ref: '#/components/schemas/HardwareWalletProperties' - $ref: '#/components/schemas/CoinbaseMpcWalletProperties' - $ref: '#/components/schemas/SmartWalletProperties' - $ref: '#/components/schemas/WaasWalletProperties' EnvironmentVisitorsResponse: type: object properties: users: type: object properties: count: type: integer uniquePastMonth: type: integer visitors: type: object properties: count: type: integer uniquePastMonth: type: integer SdkView: type: object description: Configs used to create the view in the sdk. required: - type properties: type: $ref: '#/components/schemas/SdkViewType' sections: type: array description: The sections which will be used create the view in the sdk. The sections will be displayed in the order that they appear in the array. items: $ref: '#/components/schemas/SdkViewSection' NonEmptyStringWith255MaxLengthAndSpecialChars: type: string pattern: ^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'()\[\]*]+(?<=\S)$ maxLength: 255 example: An example name 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 EmbeddedWalletVersionEnum: type: string enum: - V1 - V2 - V3 ChainConfigurations: type: array description: Chain specific configuration for dynamic embedded wallets items: $ref: '#/components/schemas/ChainConfiguration' CountryCode: type: string nullable: true description: Standard ISO 3166-1 alpha-2 two-letter country code pattern: ^[A-Z]{2}$ example: US maxLength: 255 CoinbaseMpcWalletProperties: type: object properties: claimed: type: boolean description: Dynamic pregenerated this wallet and stored the passcode source: $ref: '#/components/schemas/PasswordSourceTypeEnum' ExternalWalletFundingTokenRule: type: string enum: - recommended - exact ProjectSettingsDesignButton: type: object properties: background: type: string fontColor: type: string paddingHeight: type: integer paddingWidth: type: integer radius: type: integer ProjectSettingsDesignWidget: type: object properties: backgroundColor: type: string border: type: string radius: type: integer textColor: type: string theme: type: string TimeUnitEnum: type: string enum: - days - hours - minutes SupportedSecurityMethod: type: object required: - isDefault - isEnabled - isPermanentAuthenticator - listPosition properties: isDefault: type: boolean isEnabled: type: boolean isPermanentAuthenticator: type: boolean listPosition: type: number Unauthorized: type: object properties: error: type: string example: No jwt provided! SmartWalletProperties: type: object properties: entryPointVersion: $ref: '#/components/schemas/ProviderEntryPointVersionEnum' kernelVersion: $ref: '#/components/schemas/ProviderKernelVersionEnum' ecdsaProviderType: $ref: '#/components/schemas/ecdsaValidatorOptions' ExchangeOption: type: object required: - exchange properties: exchange: $ref: '#/components/schemas/ExchangeKeyEnum' socialProvider: $ref: '#/components/schemas/ProviderEnum' onRampProvider: $ref: '#/components/schemas/ProviderEnum' SocialSignInProvider: type: object required: - provider properties: provider: $ref: '#/components/schemas/SocialSignInProviderEnum' enabled: type: boolean ChainEnum: type: string enum: - ETH - EVM - FLOW - SOL - ALGO - STARK - COSMOS - BTC - ECLIPSE - SUI - SPARK - TRON - APTOS - TON - STELLAR PasswordSourceTypeEnum: type: string enum: - dynamic - user WalletAdditionalAddress: type: object description: An additional address associated with a wallet. required: - address - type properties: address: type: string description: An address associated with a wallet. publicKey: type: string description: The public key associated with the address. type: $ref: '#/components/schemas/WalletAddressType' WalletConnectorKey: type: string pattern: ^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-']+(?<=\S)$ minLength: 2 maxLength: 50 example: metamask AuthStorageEnum: type: string description: Location in the browser where Dynamic will attempt to store the JWT token. enum: - localstorage - cookie HardwareWalletEnum: type: string enum: - ledger SdkUser: allOf: - $ref: '#/components/schemas/BaseUser' - type: object required: - verifiedCredentials Provider: type: object required: - provider properties: id: $ref: '#/components/schemas/uuid' provider: $ref: '#/components/schemas/ProviderEnum' enabledAt: type: string format: date-time nullable: true 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 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 defaultChainId: description: 'DEPRECATED: Use defaultChain. 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 termsAcceptedByUser: $ref: '#/components/schemas/ProviderAgreement' scopes: description: Optional custom space-delimited list of Oauth scopes for the social provider type: string baseAuthUrl: description: Base auth url for oauth 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 entryPointVersion: $ref: '#/components/schemas/ProviderEntryPointVersionEnum' kernelVersion: $ref: '#/components/schemas/ProviderKernelVersionEnum' 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) salt: type: string description: The salt for the provider address generation (currently only used for zksync) multichainAccountAbstractionProviders: type: array items: type: object properties: clientId: type: string chain: type: string default: type: boolean required: - clientId - chain ecdsaProviderType: $ref: '#/components/schemas/ecdsaValidatorOptions' createNewAccounts: type: boolean enableKernelV3Migration: type: boolean enableEIP7702: type: boolean 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 MFADeviceType: type: string enum: - totp - passkey - email ExchangeKeyEnum: type: string description: Source exchange identifier enum: - coinbase - kraken 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' AuthSettings: type: object required: - storage properties: storage: type: array items: $ref: '#/components/schemas/AuthStorageEnum' SocialSignInProviderEnum: type: string enum: - apple - bitbucket - coinbasesocial - discord - epicgames - facebook - farcaster - github - gitlab - google - instagram - linkedin - microsoft - twitch - twitter - telegram - spotify - tiktok - line - steam - shopify - kraken - okta Forbidden: type: object properties: error: type: string example: Access Forbidden ProjectEnvironment: type: object properties: id: $ref: '#/components/schemas/uuid' settings: $ref: '#/components/schemas/ProjectSettings' createdAt: type: string format: date-time updatedAt: type: string format: date-time sdkVersion: type: string required: - id Funding: type: object properties: onramps: type: array items: $ref: '#/components/schemas/OnrampProviders' externalWallets: type: object properties: enabled: type: boolean minAmount: type: object properties: amount: type: string currency: type: string defaultSettings: type: object properties: chainSettings: type: array items: $ref: '#/components/schemas/ExternalWalletFundingDefaultSettings' required: - enabled required: - onramps 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' Duration: type: object required: - amount - unit properties: amount: type: integer unit: $ref: '#/components/schemas/TimeUnitEnum' WaasBackupOptionsEnum: type: string enum: - googleDrive - iCloud - dynamic - external - delegated 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' SdkViewSection: type: object description: A section used create the view in the sdk. required: - type properties: type: $ref: '#/components/schemas/SdkViewSectionType' label: type: string description: The label for the section. This will be displayed above the section or as part of the separator component if it is a Separator section. numOfItemsToDisplay: type: integer description: The deafult number of items to display in the section. For Wallet section, represents the number of wallet items to be displayed by default. User has to click a button to view more options if there are any. For Social section, represents the number of social providers to be displayed by default. User has to click a button to view more options if there are any. defaultItem: type: string description: The option to be displayed as the main one. The default item will be displayed in a more prominent way than the rest of the items in the section. For Wallet section, represents the wallet item to be displayed by default. For Social section, represents the social provider to be displayed by default. alignment: $ref: '#/components/schemas/SdkViewSectionAlignment' 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. 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 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 ProjectSettingsPrivacy: type: object properties: collectIp: type: boolean HCaptchaSettings: type: object properties: enabled: type: boolean secretKey: description: Secret key used to validate captcha response. This will never be surfaced in a GET response. type: string siteKey: type: string NetworkConfigurationResponse: type: object properties: chainName: type: string networks: type: array items: $ref: '#/components/schemas/NetworkConfiguration' ProjectSettingsChains: type: object properties: name: type: string enabled: type: boolean networks: type: array items: $ref: '#/components/schemas/Network' required: - name - enabled WalletProviderEnum: type: string enum: - browserExtension - custodialService - walletConnect - qrCode - deepLink - embeddedWallet - smartContractWallet SmsCountryCode: type: object required: - isoCountryCode - phoneCountryCode properties: isoCountryCode: $ref: '#/components/schemas/NonEmptyIsoCountryCode' phoneCountryCode: $ref: '#/components/schemas/NonEmptyStringWith255MaxLength' BaseUser: type: object required: - id - projectEnvironmentId properties: id: $ref: '#/components/schemas/uuid' projectEnvironmentId: $ref: '#/components/schemas/uuid' verifiedCredentials: type: array items: $ref: '#/components/schemas/JwtVerifiedCredential' lastVerifiedCredentialId: $ref: '#/components/schemas/uuid' sessionId: $ref: '#/components/schemas/uuid' alias: $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength' country: $ref: '#/components/schemas/CountryCode' email: type: string format: email nullable: true maxLength: 255 firstName: $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength' jobTitle: $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength' lastName: $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength' phoneNumber: type: string nullable: true maxLength: 255 policiesConsent: type: boolean nullable: true tShirtSize: $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength' team: $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength' username: $ref: '#/components/schemas/OptionalNullableNonEmptyStringWith255MaxLength' firstVisit: type: string format: date-time lastVisit: type: string format: date-time newUser: type: boolean metadata: type: object mfaBackupCodeAcknowledgement: $ref: '#/components/schemas/MfaBackupCodeAcknowledgement' btcWallet: type: string nullable: true kdaWallet: type: string nullable: true ltcWallet: type: string nullable: true ckbWallet: type: string nullable: true kasWallet: type: string nullable: true dogeWallet: type: string nullable: true emailNotification: type: boolean nullable: true discordNotification: type: boolean nullable: true newsletterNotification: type: boolean nullable: true lists: type: array description: Access lists evaluated by Dynamic when considering access for the user. items: type: string scope: type: string description: 'A whitespace-separate list of permissions associated with the JWT token issued. This conforms to the JWT standard for scope claims: https://datatracker.ietf.org/doc/html/rfc8693#section-4.2' example: superuser marketing operations missingFields: type: array items: $ref: '#/components/schemas/ProjectSettingsKyc' WalletPublicKey: type: string pattern: ^[A-Za-z0-9]{18,100}$ description: Valid blockchain wallet address, must be an alphanumeric string without any special characters example: '0xbF394748301603f18d953C90F0b087CBEC0E1834' maxLength: 255 EmbeddedWalletSecurityMethod: type: string enum: - passkey - passphrase ProviderEntryPointVersionEnum: type: string enum: - v6 - v7 ProjectSettingsDesignModal: type: object properties: border: type: string brand: type: string primaryColor: type: string radius: type: integer theme: type: string view: type: string template: type: string displayOrder: type: array items: type: string emailOnly: type: boolean showWalletsButton: type: boolean emailSubmitButtonInsideInput: type: boolean splitEmailAndSocial: type: boolean socialAboveEmail: type: boolean CustomFieldType: type: string enum: - text - checkbox - select ProviderKernelVersionEnum: type: string enum: - v2_4 - v3_0 - v3_1 - v3_2 - v3_3 uuid: type: string pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$ minLength: 36 maxLength: 36 example: 95b11417-f18f-457f-8804-68e361f9164f MFAAction: type: string enum: - wallet.waas.sign - wallet.waas.export - wallet.waas.reshare - wallet.waas.refresh - user.update MobileSettings: type: object properties: deeplinkUrlsEnabled: type: boolean description: Whether to enable whitelisting mobile deeplink URLs, which will be used for redirecting back to the mobile app. Is required for many features such as social sign in. MFASettings: type: object properties: enabled: type: boolean required: type: boolean availableMethods: type: array items: $ref: '#/components/schemas/MFADeviceType' methods: type: array items: type: object required: - type - enabled properties: type: $ref: '#/components/schemas/MFADeviceType' enabled: type: boolean allowBackupCodes: type: boolean nullable: true actions: type: array items: type: object required: - action - required properties: action: $ref: '#/components/schemas/MFAAction' required: type: boolean NonEmptyStringWith255MaxLength: type: string pattern: ^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'|]+(?<=\S)$ maxLength: 255 example: An example name CustomFieldValidValue: type: object required: - label properties: label: $ref: '#/components/schemas/NonEmptyStringWith255MaxLengthAndSpecialChars' key: $ref: '#/components/schemas/NonEmptyStringWith255MaxLengthAndSpecialChars' Exchange: type: object required: - exchange properties: id: $ref: '#/components/schemas/uuid' exchange: $ref: '#/components/schemas/ExchangeKeyEnum' enabledAt: type: string format: date-time nullable: true socialProvider: $ref: '#/components/schemas/ProviderEnum' onRampProvider: $ref: '#/components/schemas/ProviderEnum' WalletAddressType: type: string enum: - ordinals - payment - cosmos - evm - ton OnrampProviders: type: string enum: - banxa - coinbaseOnramp - cryptoDotCom ProjectSettingsGeneralApps: type: object additionalProperties: type: string format: url nullable: true example: slack: https://dynamic.xyz twitter: https://dynamic.xyz ExternalWalletFundingDefaultSettings: type: object properties: chain: $ref: '#/components/schemas/ChainEnum' token: type: object properties: value: type: string rule: $ref: '#/components/schemas/ExternalWalletFundingTokenRule' BadRequest: type: object properties: error: type: string Network: type: object properties: networkId: type: number example: '1' chainName: type: string example: Ethereum Mainnet enabled: type: boolean rpcUrl: type: string iconUrl: type: string type: type: string enum: - custom - default required: - networkId - enabled - chainName HardwareWalletProperties: type: object properties: hardwareWallet: $ref: '#/components/schemas/HardwareWalletEnum' parameters: projectId: name: projectId in: path required: true description: ID of project schema: $ref: '#/components/schemas/uuid' environmentId: in: path name: environmentId required: true description: ID of the environment schema: $ref: '#/components/schemas/uuid' responses: Unauthorized: description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Unauthorized' UnprocessableEntity: description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/UnprocessableEntity' InternalServerError: description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/InternalServerError' BadRequest: description: Bad Request content: application/json: schema: $ref: '#/components/schemas/BadRequest' Forbidden: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Forbidden' securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT