openapi: 3.0.1 info: title: Dashboard Allowlists Waas API description: Dashboard API documentation version: 1.0.0 servers: - url: https://app.dynamicauth.com/api/v0 - url: https://app.dynamic.xyz/api/v0 - url: http://localhost:3333/api/v0 tags: - name: Waas paths: /environments/{environmentId}/waas/create: post: operationId: createWaasWallet description: Creates a new WAAS wallet for a user given an email or userId. If an email is provided and it is not associated with an existing user this call will also create a new user. summary: Create a new WAAS for a user given an identifier tags: - Waas security: - bearerAuth: [] parameters: - $ref: '#/components/parameters/environmentId' requestBody: description: Pregenerate WAAS wallet for a user given an identifier required: true content: application/json: schema: $ref: '#/components/schemas/CreateUserWaasWalletsRequest' responses: '200': description: Wallet already exists for the user content: application/json: schema: $ref: '#/components/schemas/UserResponse' '201': description: Successfully created new wallet for the user content: application/json: schema: $ref: '#/components/schemas/UserResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' '500': $ref: '#/components/responses/InternalServerError' /environments/{environmentId}/waas/authenticate: post: operationId: authenticateWaas tags: - Waas summary: Authenticate for WAAS using api key security: - bearerAuth: [] parameters: - $ref: '#/components/parameters/environmentId' responses: '200': description: Successfully authenticated content: application/json: schema: $ref: '#/components/schemas/WaasAuthenticateResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' '500': $ref: '#/components/responses/InternalServerError' /environments/{environmentId}/waas/verifyApiKey: post: operationId: verifyApiKey tags: - Waas summary: Verify if an API key is valid for a specific environment description: Simple endpoint to verify if the provided API key (DYN_API_TOKEN) is valid and has access to the specified environment. Returns true if the token is verified, false otherwise. security: - bearerAuth: [] parameters: - $ref: '#/components/parameters/environmentId' responses: '200': description: API key verification result content: application/json: schema: $ref: '#/components/schemas/WaasVerifyApiKeyResponse' '400': description: Bad request - token is required content: application/json: schema: $ref: '#/components/schemas/WaasVerifyApiKeyErrorResponse' '401': description: Unauthorized - invalid or expired token content: application/json: schema: $ref: '#/components/schemas/WaasVerifyApiKeyErrorResponse' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/InternalServerError' /environments/{environmentId}/waas/{walletId}/delegatedAccess/signMessage: post: operationId: delegatedSignMessage tags: - Waas summary: Sign a message with a delegated waas account parameters: - $ref: '#/components/parameters/environmentId' - $ref: '#/components/parameters/walletId' requestBody: description: Delegate Sign Message Request required: true content: application/json: schema: $ref: '#/components/schemas/WaasDelegateSignMessageRequest' responses: '200': description: Successfully created a room for delegated signing message ceremony content: application/json: schema: $ref: '#/components/schemas/OpenRoomResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '500': $ref: '#/components/responses/InternalServerError' /environments/{environmentId}/waas/{walletId}/delegatedAccess: delete: operationId: deleteDelegatedAccess tags: - Waas summary: Revoke delegated access for a single wallet description: 'Allows developers to revoke their own delegated access for a specific wallet ' parameters: - $ref: '#/components/parameters/environmentId' - $ref: '#/components/parameters/walletId' responses: '204': description: Delegated access successfully revoked '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' /environments/{environmentId}/waas/delegatedAccess/revoke: post: operationId: revokeDelegatedAccess tags: - Waas summary: Revoke delegated access for one or more wallets description: 'Allows developers to revoke their own delegated access ' parameters: - $ref: '#/components/parameters/environmentId' requestBody: description: Revoke Delegated Access Request required: true content: application/json: schema: $ref: '#/components/schemas/RevokeDelegatedAccessRequest' responses: '200': description: Delegated access revocation processed content: application/json: schema: $ref: '#/components/schemas/RevokeDelegatedAccessResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/InternalServerError' /environments/{environmentId}/waas/delegatedAccess/encryptionPublicKeys: get: operationId: getDelegatedAccessEncryptionPublicKeys tags: - Waas summary: Get delegated access encryption public keys for an environment description: 'Fetches the encryption public keys used for delegated access in a WAAS environment. By default, returns only the latest active key. Use the includeAll query parameter to get all keys. ' parameters: - $ref: '#/components/parameters/environmentId' - name: includeAll in: query description: If true, returns all encryption public keys. Otherwise, returns only the latest active key. required: false schema: type: boolean default: false responses: '200': description: Encryption public keys fetched successfully content: application/json: schema: $ref: '#/components/schemas/DelegatedAccessEncryptionPublicKeysUnifiedResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' post: operationId: createDelegatedCredentials tags: - Waas summary: Create credentials for waas wallet delegation parameters: - $ref: '#/components/parameters/environmentId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WaasDelegationCredentialsRequest' responses: '201': description: Credentials for waas wallet delegation created successfully content: application/json: schema: $ref: '#/components/schemas/WaasDelegationCredentialsResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' '500': $ref: '#/components/responses/InternalServerError' /environments/{environmentId}/waas/delegatedAccess/encryptionPublicKeys/{keyId}: get: operationId: getDelegatedAccessEncryptionPublicKeyById tags: - Waas summary: Get a specific delegated access encryption public key by ID parameters: - $ref: '#/components/parameters/environmentId' - name: keyId in: path description: The ID of the encryption public key required: true schema: type: string format: uuid responses: '200': description: Encryption public key fetched successfully content: application/json: schema: $ref: '#/components/schemas/DelegatedAccessEncryptionPublicKeyResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' /environments/{environmentId}/waas/{walletId}: get: operationId: getWaasWalletByWalletId tags: - Waas summary: Get a specific WAAS wallet by walletId parameters: - $ref: '#/components/parameters/environmentId' - name: walletId in: path description: The ID of the WAAS wallet required: true schema: type: string format: uuid responses: '200': description: WAAS wallet fetched successfully content: application/json: schema: $ref: '#/components/schemas/WaasWalletResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' /environments/{environmentId}/waas/{walletId}/keyShares/backup/locations: post: operationId: backupKeySharesToLocationsForPregen tags: - Waas summary: Create backup action for key shares using API token authentication description: 'Creates backup locations for wallet key shares. Requires API token authentication. Validates that the user belongs to the environment and that no client key shares exist for the wallet. This endpoint is intended for server-side integrations that need to backup key shares on behalf of users. ' parameters: - $ref: '#/components/parameters/environmentId' - $ref: '#/components/parameters/walletId' requestBody: description: Backup locations request with userId required: true content: application/json: schema: $ref: '#/components/schemas/BackupKeySharesToLocationsWithUserIdRequest' responses: '201': description: Backup action and event created successfully content: application/json: schema: $ref: '#/components/schemas/BackupKeySharesToLocationsResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' security: - bearerAuth: [] /environments/{environmentId}/waas/policies: post: operationId: createWaasPolicy tags: - Waas summary: Create a new WAAS policy for an environment or add new rules to an existing policy parameters: - $ref: '#/components/parameters/environmentId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WaasPolicyCreateRequest' responses: '201': description: WAAS policy created successfully content: application/json: schema: $ref: '#/components/schemas/WaasPolicyResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' '500': $ref: '#/components/responses/InternalServerError' get: operationId: getWaasPolicy tags: - Waas summary: Get the WAAS policy for an environment parameters: - $ref: '#/components/parameters/environmentId' responses: '200': description: WAAS policy fetched successfully content: application/json: schema: $ref: '#/components/schemas/WaasPolicyResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' put: operationId: updateWaasPolicy tags: - Waas summary: Update the WAAS policy for an environment by ruleId parameters: - $ref: '#/components/parameters/environmentId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WaasPolicyUpdateRequest' responses: '200': description: WAAS policy updated successfully content: application/json: schema: $ref: '#/components/schemas/WaasPolicyResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' '500': $ref: '#/components/responses/InternalServerError' delete: operationId: deleteWaasPolicy tags: - Waas summary: Delete a WAAS policy rule by ruleId parameters: - $ref: '#/components/parameters/environmentId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WaasPolicyDeleteRequest' responses: '200': description: WAAS policy rules deleted successfully content: application/json: schema: $ref: '#/components/schemas/WaasPolicyResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '422': $ref: '#/components/responses/UnprocessableEntity' '500': $ref: '#/components/responses/InternalServerError' /environments/{environmentId}/waas/{walletId}/signaturePolicy: post: operationId: createWaasSignaturePolicy tags: - Waas summary: Create a new WAAS signature policy for a wallet parameters: - $ref: '#/components/parameters/environmentId' - $ref: '#/components/parameters/walletId' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpCreateRequest' responses: '201': description: WAAS signature policy created successfully content: application/json: schema: $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/InternalServerError' get: operationId: getWaasSignaturePolicies tags: - Waas summary: Get all active WAAS signature policies for a wallet parameters: - $ref: '#/components/parameters/environmentId' - $ref: '#/components/parameters/walletId' responses: '200': description: WAAS signature policies fetched successfully content: application/json: schema: type: array items: $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/InternalServerError' /environments/{environmentId}/waas/{walletId}/signaturePolicy/{policyId}: get: operationId: getWaasSignaturePolicyByWalletIdAndPolicyId tags: - Waas summary: Get a WAAS signature policy by walletId and policyId parameters: - $ref: '#/components/parameters/environmentId' - $ref: '#/components/parameters/walletId' - name: policyId in: path description: The ID of the signature policy for the wallet required: true schema: type: string format: uuid responses: '200': description: WAAS signature policy fetched successfully content: application/json: schema: $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' put: operationId: updateWaasSignaturePolicyByWalletIdAndPolicyId tags: - Waas summary: Update a WAAS signature policy by walletId and policyId parameters: - $ref: '#/components/parameters/environmentId' - $ref: '#/components/parameters/walletId' - name: policyId in: path description: The ID of the signature policy for the wallet required: true schema: type: string format: uuid requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpCreateRequest' responses: '200': description: WAAS signature policy updated successfully content: application/json: schema: $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' delete: operationId: deleteWaasSignaturePolicyByWalletIdAndPolicyId tags: - Waas summary: Delete a WAAS signature policy by walletId and policyId parameters: - $ref: '#/components/parameters/environmentId' - $ref: '#/components/parameters/walletId' - name: policyId in: path description: The ID of the signature policy for the wallet required: true schema: type: string format: uuid responses: '200': description: WAAS signature policy deleted successfully content: application/json: schema: $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' /sdk/{environmentId}/waas/delegatedAccess/encryptionPublicKey: get: operationId: getDelegatedAccessEncryptionPublicKey tags: - Waas summary: Get delegated access encryption public key for an environment description: 'Fetches the encryption public key used for delegated access in a WAAS environment. By default, returns only the latest active key. ' parameters: - $ref: '#/components/parameters/environmentId' responses: '200': description: Encryption public key fetched successfully content: application/json: schema: $ref: '#/components/schemas/DelegatedAccessEncryptionPublicKeyResponse' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' components: schemas: 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 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 NonEmptyStringWith4096MaxLength: type: string maxLength: 4096 description: A string with a max length of 4096 characters WaasVerifyApiKeyErrorResponse: type: object required: - message - verified properties: message: type: string description: Error message describing why verification failed verified: type: boolean description: Always false for error responses ChainalysisCheck: type: object properties: id: $ref: '#/components/schemas/uuid' createdAt: type: string format: date-time result: $ref: '#/components/schemas/ChainalysisCheckResultEnum' walletPublicKey: $ref: '#/components/schemas/WalletPublicKey' response: type: string required: - id - createdAt - result - walletPublicKey - response WaasDelegationCredentialsRequest: type: object required: - publicKey properties: publicKey: $ref: '#/components/schemas/NonEmptyStringWith4096MaxLength' alg: $ref: '#/components/schemas/NonEmptyStringWith50MaxLength' type: $ref: '#/components/schemas/WaasDelegatedAccessEncryptionPublicKeyType' NotFound: type: object required: - error - code properties: error: type: string example: Not Found code: type: string example: not_found WaasWalletSettings: type: object properties: hasDeniedDelegatedAccess: type: boolean shouldRefreshOnNextSignOn: type: boolean reshareOnNextSignOn: $ref: '#/components/schemas/ThresholdSignatureScheme' revokeOnNextSignOn: type: boolean WaasDelegationCredentialsResponse: type: object required: - publicKey - kid - alg - createdAt - updatedAt properties: publicKey: $ref: '#/components/schemas/NonEmptyStringWith4096MaxLength' kid: type: string description: Short identifier referenced in webhook envelopes so the developer knows which private key to use maxLength: 64 alg: type: string enum: - RSA-OAEP-256 - HYBRID-RSA-AES-256 description: Algorithm for how this key is used type: $ref: '#/components/schemas/WaasDelegatedAccessEncryptionPublicKeyType' createdAt: type: string format: date-time updatedAt: type: string format: date-time WaasPolicyResponse: type: object required: - policyId - projectEnvironmentId - createdAt - updatedAt - policyContent properties: message: type: string description: Message describing the operation result policyId: type: string projectEnvironmentId: $ref: '#/components/schemas/uuid' createdAt: type: string format: date-time updatedAt: type: string format: date-time policyContent: type: array items: $ref: '#/components/schemas/WaasPolicyRule' NonEmptyIsoCountryCode: type: string pattern: ^[a-zA-Z]{2,4}\d?$ maxLength: 4 example: US OpenRoomResponse: type: object required: - roomId properties: roomId: type: string serverKeygenIds: type: array items: $ref: '#/components/schemas/NonEmptyBase58StringWith100MaxLength' newServerKeygenIds: type: array items: $ref: '#/components/schemas/NonEmptyBase58StringWith100MaxLength' walletId: $ref: '#/components/schemas/uuid' WaasPolicyConstraintCondition: type: string enum: - equal - greater - less - greaterEqual - lessEqual - notEqual description: Comparison operator for argument validation WalletKeyShareInfo: type: object required: - id - backupLocation - passwordEncrypted properties: id: $ref: '#/components/schemas/uuid' backupLocation: type: string passwordEncrypted: type: boolean externalKeyShareId: $ref: '#/components/schemas/uuid' User: allOf: - $ref: '#/components/schemas/BaseUser' - type: object properties: walletPublicKey: type: string wallet: type: string chain: $ref: '#/components/schemas/ChainEnum' createdAt: type: string format: date-time updatedAt: type: string format: date-time sessions: type: array items: $ref: '#/components/schemas/Session' wallets: type: array items: $ref: '#/components/schemas/Wallet' chainalysisChecks: type: array items: $ref: '#/components/schemas/ChainalysisCheck' oauthAccounts: type: array items: $ref: '#/components/schemas/oAuthAccount' mfaDevices: type: array items: $ref: '#/components/schemas/MFADevice' 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 WaasPolicyDeleteRequest: type: object required: - ruleIdsToDelete properties: ruleIdsToDelete: type: array items: $ref: '#/components/schemas/uuid' description: Array of rule IDs to delete from the policy BackupKeySharesToLocationsWithUserIdRequest: type: object required: - userId - locations properties: userId: type: string format: uuid description: The ID of the user who owns the wallet locations: type: array items: type: object required: - location properties: location: $ref: '#/components/schemas/WaasBackupOptionsEnum' keygenId: $ref: '#/components/schemas/NonEmptyStringWith255MaxLength' thresholdSignatureScheme: $ref: '#/components/schemas/ThresholdSignatureScheme' externalKeyShareId: $ref: '#/components/schemas/NonEmptyString' 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' UserResponse: type: object properties: user: $ref: '#/components/schemas/User' InternalServerError: type: object properties: error: type: string example: Internal Server Error oAuthAccount: type: object properties: id: $ref: '#/components/schemas/uuid' provider: $ref: '#/components/schemas/ProviderEnum' accountUsername: type: string SolanaPublicKey: type: string pattern: ^[1-9A-HJ-NP-Za-km-z]{43,44}$ description: Valid Solana wallet address, must be a 44-character string using base58 characters example: vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg WaasPolicyRuleType: type: string enum: - allow - deny description: Whether the rule permits or denies the specified action 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 MfaBackupCodeAcknowledgement: type: string nullable: true enum: - pending - complete KycFieldType: type: string enum: - standard - custom NameServiceData: type: object properties: avatar: type: string name: type: string WaasAuthenticateResponse: type: object required: - message - encodedJwts properties: message: type: string encodedJwts: type: object properties: jwt: type: string minifiedJwt: type: string WaasChainEnum: type: string enum: - EVM - SVM - SUI - BTC - TON WaasWalletResponse: type: object required: - wallet properties: wallet: $ref: '#/components/schemas/WaasWallet' DelegatedAccessEncryptionPublicKeysUnifiedResponse: type: object required: - message properties: key: allOf: - $ref: '#/components/schemas/DelegatedAccessEncryptionPublicKey' description: Single key when includeAll is false keys: type: array items: $ref: '#/components/schemas/DelegatedAccessEncryptionPublicKey' description: Array of keys when includeAll is true message: type: string description: Message describing the operation result 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' WaasWalletSignaturePolicyTmpResponse: type: object required: - id - walletId - expiresAt - policyContent properties: id: $ref: '#/components/schemas/uuid' walletId: $ref: '#/components/schemas/uuid' expiresAt: type: string format: date-time description: Timestamp when the policy expires policyContent: type: array minItems: 1 description: Array of policy rules, each defining allowed addresses, chain, and value limits for different assets items: type: object required: - chain - toAddresses - valueLimits properties: chain: $ref: '#/components/schemas/WaasChainEnum' toAddresses: type: array minItems: 1 description: Array of allowed recipient addresses (vault addresses) for this chain items: anyOf: - $ref: '#/components/schemas/WalletPublicKey' - $ref: '#/components/schemas/SolanaPublicKey' valueLimits: type: array minItems: 1 description: Array of value limits for different assets on this chain items: type: object required: - asset - maxPerCall properties: asset: description: Target asset address anyOf: - $ref: '#/components/schemas/WalletPublicKey' - $ref: '#/components/schemas/SolanaPublicKey' maxPerCall: type: string description: Maximum value per transaction (as string to handle bigint) pattern: ^[0-9]+$ WalletProperties: anyOf: - $ref: '#/components/schemas/TurnkeyWalletProperties' - $ref: '#/components/schemas/HardwareWalletProperties' - $ref: '#/components/schemas/CoinbaseMpcWalletProperties' - $ref: '#/components/schemas/SmartWalletProperties' - $ref: '#/components/schemas/WaasWalletProperties' MFADevice: type: object properties: type: $ref: '#/components/schemas/MFADeviceType' verified: type: boolean description: Whether or not the user has a verified this MFA Device id: $ref: '#/components/schemas/uuid' createdAt: type: string format: date-time description: The date and time the MFA device was created verifiedAt: type: string format: date-time description: The date and time the MFA device was verified nullable: true default: type: boolean description: Whether or not this is the default MFA device for the user alias: type: string description: The optional alias for the MFA device NonEmptyStringWith255MaxLengthAndSpecialChars: type: string pattern: ^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'()\[\]*]+(?<=\S)$ maxLength: 255 example: An example name WaasDelegateSignMessageRequest: type: object required: - message properties: message: $ref: '#/components/schemas/NonEmptyStringWith16384MaxLength' isFormatted: type: boolean roomId: 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 CoinbaseMpcWalletProperties: type: object properties: claimed: type: boolean description: Dynamic pregenerated this wallet and stored the passcode source: $ref: '#/components/schemas/PasswordSourceTypeEnum' NonEmptyStringWith16384MaxLength: type: string maxLength: 16384 description: A string with a max length of 16384 characters RevokeDelegatedAccessWalletResult: type: object required: - walletId - success properties: walletId: $ref: '#/components/schemas/uuid' success: type: boolean description: Whether the revocation was successful for this wallet error: type: string description: Error message if the revocation failed CreateUserWaasWalletsRequest: required: - identifier - type - chains type: object properties: identifier: type: string description: Identifier for the user. Must be either an email, phone number, user id, external user id, or username from a supported social provider type: $ref: '#/components/schemas/UserIdentifierTypeEnum' chains: type: array description: The chains to create the wallet for items: $ref: '#/components/schemas/WaasChainEnum' smsCountryCode: $ref: '#/components/schemas/SmsCountryCode' socialProvider: $ref: '#/components/schemas/ProviderEnum' 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' NonEmptyBase58StringWith100MaxLength: type: string pattern: ^[1-9A-HJ-NP-Za-km-z]+$ maxLength: 100 description: A base58 string with a max length of 100 characters ChainEnum: type: string enum: - ETH - EVM - FLOW - SOL - ALGO - STARK - COSMOS - BTC - ECLIPSE - SUI - SPARK - TRON - APTOS - TON - STELLAR DelegatedAccessEncryptionPublicKey: type: object required: - id - projectEnvironmentId - kid - alg - publicKeyPemB64 - status - type - createdAt - updatedAt properties: id: $ref: '#/components/schemas/uuid' projectEnvironmentId: $ref: '#/components/schemas/uuid' kid: type: string description: Short identifier referenced in webhook envelopes so the developer knows which private key to use maxLength: 64 alg: type: string enum: - RSA-OAEP-256 - HYBRID-RSA-AES-256 description: Algorithm for how this key is used publicKeyPemB64: type: string description: Developer's public key material, PEM encoded then base64'd maxLength: 4096 status: type: string enum: - pending - active - revoked description: Lifecycle status of this key type: $ref: '#/components/schemas/WaasDelegatedAccessEncryptionPublicKeyType' expiresAt: type: string format: date-time nullable: true description: Optional expiry for planned rotations revokedAt: type: string format: date-time nullable: true description: Timestamp when the key was revoked createdAt: type: string format: date-time updatedAt: type: string format: date-time 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' WaasPolicyCreateRequest: type: object required: - rulesToAdd properties: rulesToAdd: type: array items: $ref: '#/components/schemas/WaasPolicyRule' description: Array of rules to add to the policy, will create policy if it doesn't exist HardwareWalletEnum: type: string enum: - ledger SdkUser: allOf: - $ref: '#/components/schemas/BaseUser' - type: object required: - verifiedCredentials MFADeviceType: type: string enum: - totp - passkey - email 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' Forbidden: type: object properties: error: type: string example: Access Forbidden WaasPolicyArgumentConstraint: type: object required: - operator - value - index properties: operator: $ref: '#/components/schemas/WaasPolicyConstraintCondition' value: description: Reference value for comparison index: type: integer minimum: 0 description: Index of the function argument to validate 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' Session: type: object properties: id: $ref: '#/components/schemas/uuid' createdAt: type: string format: date-time ipAddress: type: string nullable: true userAgent: type: string nullable: true revokedAt: type: string format: date-time nullable: true 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 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' RevokeDelegatedAccessResponse: type: object required: - results - total - succeeded - failed properties: results: type: array items: $ref: '#/components/schemas/RevokeDelegatedAccessWalletResult' description: Results for each wallet total: type: integer description: Total number of wallets processed succeeded: type: integer description: Number of wallets successfully revoked failed: type: integer description: Number of wallets that failed to revoke 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. WaasWallet: type: object required: - accountAddress - chainName - derivationPath - thresholdSignatureScheme - walletId properties: accountAddress: type: string description: The account address of the wallet chainName: $ref: '#/components/schemas/WaasChainEnum' walletId: $ref: '#/components/schemas/uuid' thresholdSignatureScheme: $ref: '#/components/schemas/ThresholdSignatureScheme' derivationPath: type: string description: The derivation path used for the wallet keyShares: type: array items: $ref: '#/components/schemas/WalletKeyShareInfo' 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 WaasWalletSignaturePolicyTmpCreateRequest: type: object required: - policyContent - timeLimit properties: policyContent: type: array minItems: 1 description: Array of policy rules, each defining allowed addresses, chain, and value limits for different assets items: type: object required: - chain - toAddresses - valueLimits properties: chain: $ref: '#/components/schemas/WaasChainEnum' toAddresses: type: array minItems: 1 description: Array of allowed recipient addresses (vault addresses) for this chain items: anyOf: - $ref: '#/components/schemas/WalletPublicKey' - $ref: '#/components/schemas/SolanaPublicKey' valueLimits: type: array minItems: 1 description: Array of value limits for different assets on this chain items: type: object required: - asset - maxPerCall properties: asset: description: Target asset address anyOf: - $ref: '#/components/schemas/WalletPublicKey' - $ref: '#/components/schemas/SolanaPublicKey' maxPerCall: type: string description: Maximum value per transaction (as string to handle bigint) pattern: ^[0-9]+$ timeLimit: $ref: '#/components/schemas/WaasWalletSignaturePolicyTmpTimeLimit' RevokeDelegatedAccessRequest: type: object required: - walletIds properties: walletIds: type: array items: $ref: '#/components/schemas/uuid' description: Array of wallet IDs to revoke delegated access for minItems: 1 maxItems: 100 WaasWalletSignaturePolicyTmpTimeLimit: type: integer description: Time limit in seconds until the policy expires. Must be greater than 0 seconds. minimum: 1 WaasVerifyApiKeyResponse: type: object required: - environmentId - verified properties: environmentId: type: string format: uuid description: The environment ID for which the API key was verified verified: type: boolean description: Indicates whether the API key is valid and has access to the environment WaasPolicyUpdateRequest: type: object required: - rulesToUpdate properties: rulesToUpdate: type: array items: $ref: '#/components/schemas/WaasPolicyRule' description: Array of rules to update in the policy BackupKeySharesToLocationsResponse: type: object required: - message - walletId - locationsWithKeyShares properties: message: type: string walletId: $ref: '#/components/schemas/uuid' locationsWithKeyShares: type: array items: type: object required: - location - keyShareId - externalKeyShareId properties: location: $ref: '#/components/schemas/WaasBackupOptionsEnum' keyShareId: $ref: '#/components/schemas/uuid' externalKeyShareId: $ref: '#/components/schemas/uuid' WalletProviderEnum: type: string enum: - browserExtension - custodialService - walletConnect - qrCode - deepLink - embeddedWallet - smartContractWallet WaasDelegatedAccessEncryptionPublicKeyType: type: string enum: - dynamic - external 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' WaasPolicyRule: type: object required: - name - ruleType - chain properties: ruleId: $ref: '#/components/schemas/uuid' name: type: string description: Human-readable name for the rule ruleType: $ref: '#/components/schemas/WaasPolicyRuleType' address: description: Target address EVM or SVM (legacy field) anyOf: - $ref: '#/components/schemas/WalletPublicKey' - $ref: '#/components/schemas/SolanaPublicKey' deprecated: true addresses: description: Target address(es) EVM or SVM type: array items: anyOf: - $ref: '#/components/schemas/WalletPublicKey' - $ref: '#/components/schemas/SolanaPublicKey' chain: $ref: '#/components/schemas/WaasChainEnum' chainId: type: number description: Chain ID for the policy rule (legacy field) chainIds: description: Chain IDs for the policy rule type: array items: type: number contractAbi: type: array description: Contract ABI interface items: type: object functionName: type: string description: Specific function name to permit/deny argumentConstraints: type: array items: $ref: '#/components/schemas/WaasPolicyArgumentConstraint' description: Validation rules for function arguments valueLimit: type: object description: Value limits for the policy rule properties: asset: description: Target asset address. If undefined, refers to native token (e.g., ETH) anyOf: - $ref: '#/components/schemas/WalletPublicKey' - $ref: '#/components/schemas/SolanaPublicKey' maxPerCall: type: string description: Maximum value per function call (as string to handle bigint) pattern: ^[0-9]+$ totalLimit: type: string description: Cumulative value limit (as string to handle bigint) pattern: ^[0-9]+$ operationRestrictions: type: object description: Operation-level restrictions for the wallet properties: blockExport: type: boolean description: Block private key export blockRevocation: type: boolean description: Block end-user revocation of delegated access blockClientSigning: type: boolean description: Block all end-user signing (not delegated) 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 SmsCountryCode: type: object required: - isoCountryCode - phoneCountryCode properties: isoCountryCode: $ref: '#/components/schemas/NonEmptyIsoCountryCode' phoneCountryCode: $ref: '#/components/schemas/NonEmptyStringWith255MaxLength' ProviderEntryPointVersionEnum: type: string enum: - v6 - v7 CustomFieldType: type: string enum: - text - checkbox - select NonEmptyString: type: string pattern: ^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'|]+(?<=\S)$ example: An example name ProviderKernelVersionEnum: type: string enum: - v2_4 - v3_0 - v3_1 - v3_2 - v3_3 UserIdentifierTypeEnum: type: string enum: - email - id - externalUserId - phoneNumber - socialUsername - socialAccountId 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 ChainalysisCheckResultEnum: type: string enum: - OK - BLOCKED - FAILED NonEmptyStringWith50MaxLength: type: string pattern: ^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'|]+(?<=\S)$ example: An example name maxLength: 50 Wallet: type: object properties: id: $ref: '#/components/schemas/uuid' name: $ref: '#/components/schemas/NonEmptyString' chain: $ref: '#/components/schemas/ChainEnum' publicKey: $ref: '#/components/schemas/WalletPublicKey' provider: $ref: '#/components/schemas/WalletProviderEnum' properties: $ref: '#/components/schemas/WalletProperties' lastSelectedAt: type: string nullable: true required: - id - name - chain - publicKey - provider 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' WalletAddressType: type: string enum: - ordinals - payment - cosmos - evm - ton DelegatedAccessEncryptionPublicKeyResponse: type: object required: - key - message properties: key: $ref: '#/components/schemas/DelegatedAccessEncryptionPublicKey' message: type: string description: Message describing the operation result BadRequest: type: object properties: error: type: string HardwareWalletProperties: type: object properties: hardwareWallet: $ref: '#/components/schemas/HardwareWalletEnum' parameters: walletId: in: path name: walletId schema: $ref: '#/components/schemas/uuid' required: true description: UUID of the wallet 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' NotFound: description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFound' Forbidden: description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Forbidden' securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT