Dynamic SDK API

The SDK API from Dynamic — 124 operation(s) for sdk.

OpenAPI Specification

dynamic-xyz-sdk-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Dashboard Allowlists SDK 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: SDK
paths:
  /environments/{environmentId}/users/{userId}/balances:
    post:
      operationId: getUserAccountBalances
      tags:
      - SDK
      summary: Get account balances for multiple addresses
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/userId'
      requestBody:
        description: Array of account addresses with chains and network IDs
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultichainAccountBalancesRequest'
      responses:
        '200':
          description: Token balances organized by chain and network
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MultichainAccountBalanceResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /exchangeRates:
    get:
      operationId: getExchangeRates
      tags:
      - SDK
      description: Exchange rates for the given currency
      responses:
        '200':
          description: Exchange rates response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeRatesResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/waas/keyShares/backup/token:
    get:
      operationId: getBackupToken
      tags:
      - SDK
      summary: Generate a short-lived JWT token for use with WAAS client backups.
      description: This endpoint generates a short-lived JWT token for use with WAAS client backups. The token is valid for 1 minute and can only be used for storing and retrieving client keyshare backups. A Dynamic Auth user must be authenticated and have a Dynamic JWT to use this endpoint.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: Successfully generated a short-lived JWT token for use with WAAS client backups
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GeneratedTokenResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/check:
    get:
      operationId: getUserFieldsCheck
      tags:
      - SDK
      summary: Check user field uniqueness
      description: Check if the unique field value is already taken. For example, an enabled unique username or unique email. This also works with enabled unique custom fields.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - in: query
        name: filter
        required: false
        style: form
        schema:
          $ref: '#/components/schemas/UserFieldsCheckParams'
      responses:
        '200':
          description: successful check
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserFieldsCheckResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
      security:
      - bearerAuth: []
  /sdk/{environmentId}/providers/{providerType}/initAuth:
    post:
      operationId: initAuth
      tags:
      - SDK
      summary: Initialize oauth auth sequence
      description: This endpoint initializes a secure oauth authentication sequence by providing the state and current url path to the API.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/providerType'
      requestBody:
        description: OAuth temporary auth code
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OauthInitAuthRequest'
        required: true
      responses:
        '204':
          description: Empty response
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/session:
    get:
      operationId: sessionCheck
      summary: Check that session is valid
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '204':
          description: Empty response
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/scan/websiteUrl:
    post:
      summary: Scan a URL for potential malicious activity
      operationId: scanUrl
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScanWebsiteUrlRequest'
      responses:
        '200':
          description: Successful scan result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScanWebsiteUrlResponse'
        '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'
  /sdk/{environmentId}/solana/simulateTransaction:
    post:
      operationId: simulateSVMTransaction
      tags:
      - SDK
      summary: Simulate a Solana transaction
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimulateSVMTransactionRequest'
        required: true
      responses:
        '200':
          description: Simulated transaction result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimulateTransactionResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/solana/sponsorTransaction:
    post:
      operationId: sponsorSVMTransaction
      tags:
      - SDK
      summary: Sponsor a Solana transaction via Grid API
      description: 'Sponsors a Solana transaction using the Grid API by Squads.

        The Grid API replaces the fee payer with a sponsored account so users don''t need SOL for gas.

        Only available for environments with SVM gas sponsorship enabled.

        '
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SponsorSVMTransactionRequest'
        required: true
      responses:
        '200':
          description: Sponsored transaction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SponsorSVMTransactionResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/evm/simulateTransaction:
    post:
      operationId: simulateEVMTransaction
      tags:
      - SDK
      summary: Simulate an EVM transaction
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimulateEVMTransactionRequest'
        required: true
      responses:
        '200':
          description: Simulated transaction result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimulateTransactionResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/evm/simulateUserOp:
    post:
      operationId: simulateUserOp
      tags:
      - SDK
      summary: Simulate an EVM AA UserOp
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SimulateUserOpRequest'
        required: true
      responses:
        '200':
          description: Simulated transaction result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SimulateTransactionResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/externalAuth/signin:
    post:
      operationId: externalAuthSignin
      summary: Endpoint to sign-in using a token issued by an external auth provider
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalAuthSigninRequest'
        required: true
      responses:
        '200':
          description: Successful external auth signin response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/solana/optimizeTransaction:
    post:
      summary: Add fees to a Solana transaction
      operationId: optimizeTransaction
      tags:
      - SDK
      security:
      - BearerAuth: []
      parameters:
      - name: environmentId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SolanaTransactionOptimizationRequest'
      responses:
        '200':
          description: Successfully optimized transaction
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SolanaTransactionOptimizationResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/externalAuth/verify:
    post:
      operationId: externalAuthVerify
      deprecated: true
      summary: '[DEPRECATED] Please use /externalAuth/signin instead'
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExternalAuthSigninRequest'
        required: true
      responses:
        '410':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/embeddedWallets/authToken:
    get:
      operationId: getAuthToken
      summary: Get auth token for given embedded wallet type
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - in: query
        name: type
        schema:
          $ref: '#/components/schemas/EmbeddedWalletAuthType'
      responses:
        '200':
          description: embedded wallet auth token response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletAuthToken'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/embeddedWallets/passcode:
    get:
      operationId: getEmbeddedWalletPasscode
      summary: Return the passcode for the pregenerated embedded wallet of the authenticated user
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: embedded wallet passcode response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletSecret'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '404':
          description: Not found
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/wallets/selection:
    put:
      operationId: selectUserWallet
      summary: Update wallet in a multi-wallet selection
      description: When a user selects a wallet to be the primary wallet in a multi-wallet enabled environment, this endpoint is called to record this on the backend.
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserWalletSelectionRequest'
        required: true
      responses:
        '200':
          description: Updated standard, minified JWT and full user profile object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/embeddedWallets/passcode/claim:
    put:
      operationId: claimEmbeddedWallet
      summary: Claim a pregenerated embedded wallet
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EmbeddedWalletPasscodeClaimRequest'
        required: true
      responses:
        '200':
          description: Claim embedded wallet response with updated jwt
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/embeddedWallets/backup:
    get:
      operationId: getEmbeddedWalletBackups
      summary: Return the backup key for the embedded wallet of the authenticated user
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: embedded wallet passcode response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmbeddedWalletSecret'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '404':
          description: Not found
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/users/embeddedWallets/upgradeToV2:
    post:
      operationId: upgradeEmbeddedWalletToV2
      tags:
      - SDK
      summary: Update V1 embedded wallet to V2
      requestBody:
        description: Session info required to upgrade embedded wallet to V2
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpgradeEmbeddedWalletToV2Request'
        required: true
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '201':
          description: Successfully migrated to V2 embedded wallet and refreshed jwt token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/healthcheck:
    get:
      operationId: getHealthcheck
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      description: Health check endpoint to check for uptime of API.
      responses:
        '200':
          description: Healthcheck response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HealthcheckResponse'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/refresh:
    post:
      operationId: refreshAuth
      summary: Endpoint to refresh the JWT auth token using the current valid JWT auth token in the authorization header
      security:
      - bearerAuth: []
      tags:
      - SDK
      parameters:
      - $ref: '#/components/parameters/environmentId'
      responses:
        '200':
          description: Successful refreshed jwt token and user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/emailProvider:
    get:
      operationId: getEmailProvider
      tags:
      - SDK
      summary: Get signin email provider
      description: Return the email provider to be used for signing in with a given email. If an external provider such as magicLink is disabled, this endpoint would return emailOnly. If an external provider such as magicLink is enabled, it will return emailOnly when the email already exists in Dynamic and it is associated with a wallet, otherwise it will return magicLink.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - in: query
        required: true
        name: email
        allowReserved: true
        schema:
          type: string
          format: email
      responses:
        '200':
          description: Email provider response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EmailProviderResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/{providerType}/loginUrl:
    get:
      operationId: oauthLoginUrl
      tags:
      - SDK
      summary: Get redirect URL for Oauth provider login. This will return a string that the SDK can manipulate before redirecting the browser to.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/providerType'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OauthProviderLoginUrl'
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/{providerType}/login:
    get:
      operationId: oauthLogin
      tags:
      - SDK
      summary: Get redirect URL for Oauth provider login
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/providerType'
      responses:
        '302':
          description: Redirect
          headers:
            Location:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/{providerType}/redirect:
    get:
      operationId: oauthRedirectCode
      tags:
      - SDK
      summary: Oauth provider redirect endpoint
      description: Endpoint where an oauth provider would redirect after a successful user authorizing the oauth application.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/providerType'
      - in: query
        name: code
        allowReserved: true
        schema:
          $ref: '#/components/schemas/OAuthCode'
      - in: query
        name: scope
        allowReserved: true
        schema:
          type: string
      - in: query
        name: state
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: authuser
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: prompt
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: error
        allowReserved: true
        schema:
          $ref: '#/components/schemas/OAuthError'
      responses:
        '200':
          description: Success
          content:
            text/html:
              schema:
                type: string
        '302':
          description: Redirect
          headers:
            Location:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/cbOauthRedirectUrl:
    get:
      operationId: cbOauthRedirect
      tags:
      - SDK
      summary: Redirect URL for sign-in with coinbase
      description: This endpoint proxies requests to `/sdk/{environmentId}/providers/coinbasesocial/redirect` because Coinbase does not allow the string `coinbase` on the redirect URL path
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - in: query
        name: code
        allowReserved: true
        schema:
          $ref: '#/components/schemas/OAuthCode'
      - in: query
        name: scope
        allowReserved: true
        schema:
          type: string
      - in: query
        name: state
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: authuser
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: prompt
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: error
        allowReserved: true
        schema:
          $ref: '#/components/schemas/OAuthError'
      responses:
        '200':
          description: Success
          content:
            text/html:
              schema:
                type: string
        '302':
          description: Redirect
          headers:
            Location:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/apple/redirect:
    post:
      operationId: oauthRedirectApple
      tags:
      - SDK
      summary: Oauth provider redirect endpoint for apple ID
      description: Endpoint where an oauth provider would redirect after a successful user authorizing the oauth application.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        description: Apple ID required stuff
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/OauthRedirectRequest'
        required: true
      responses:
        '200':
          description: Success
          content:
            text/html:
              schema:
                type: string
        '302':
          description: Redirect
          headers:
            Location:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/{providerType}/authorizeHtml:
    get:
      operationId: oauthAuthorizeHtml
      tags:
      - SDK
      summary: Oauth provider authorization endpoint
      description: Endpoint where an oauth provider would return authorization HTML used for mobile-friendly login, such as Apple ID with Touch ID on enabled devices.
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/providerType'
      - in: query
        name: scope
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: state
        allowReserved: true
        schema:
          $ref: '#/components/schemas/ValidStringQueryParam'
      - in: query
        name: redirect_uri
        allowReserved: true
        schema:
          $ref: '#/components/schemas/OauthRedirectUri'
      responses:
        '200':
          description: Success
          content:
            text/html:
              schema:
                type: string
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          description: provider not found
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/providers/{providerType}/verify:
    post:
      operationId: oauthVerify
      tags:
      - SDK
      summary: Oauth provider verify endpoint
      description: Standard OAuth verify callback to exchange temproary code for oauth access
      parameters:
      - $ref: '#/components/parameters/environmentId'
      - $ref: '#/components/parameters/providerType'
      requestBody:
        description: OAuth temporary auth code
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OauthRequest'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/farcaster/signin:
    post:
      operationId: farcasterSignIn
      tags:
      - SDK
      summary: Farcaster provider SignIn endpoint
      description: Farcaster SignIn endpoint to exchange SIWF data
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        description: Sign In Response
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FarcasterSignInRequest'
      responses:
        '200':
          description: Sign In Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '429':
          $ref: '#/components/responses/BadRequest'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /sdk/{environmentId}/farcaster/verify:
    post:
      operationId: farcasterVerify
      tags:
      - SDK
      summary: Farcaster provider Verify endpoint
      description: Farcaster Verify endpoint to exchange SIWF data
      parameters:
      - $ref: '#/components/parameters/environmentId'
      requestBody:
        description: Verify Response
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FarcasterSignInRequest'
      responses:
        '200':
          description: Verify Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VerifyResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/ForbiddenWithErrorAndPayload'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /sdk/{environmentI

# --- truncated at 32 KB (296 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dynamic-xyz/refs/heads/main/openapi/dynamic-xyz-sdk-api-openapi.yml