Dynamic Organizations API

The Organizations API from Dynamic — 8 operation(s) for organizations.

OpenAPI Specification

dynamic-xyz-organizations-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Dashboard Allowlists Organizations 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: Organizations
paths:
  /organizations:
    post:
      operationId: createOrganization
      tags:
      - Organizations
      summary: Creates organization
      requestBody:
        description: Organization data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationRequest'
        required: true
      responses:
        '200':
          description: Organization response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
    get:
      operationId: getOrganizationsForMember
      tags:
      - Organizations
      summary: Fetches all the active organizations that the user has access to
      responses:
        '200':
          description: successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /organizations/{organizationId}/billing/subscription:
    get:
      summary: Find the subscription of an organization using its ID
      operationId: getBillingSubscriptionByOrganization
      tags:
      - Organizations
      parameters:
      - $ref: '#/components/parameters/organizationId'
      responses:
        '200':
          description: Details of the organziation's current subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingSubscription'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Not found
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /organizations/{organizationId}/billing/upgrade:
    put:
      summary: Upgrade organziation to advanced plan
      operationId: upgradeSubscriptionForOrganization
      tags:
      - Organizations
      parameters:
      - $ref: '#/components/parameters/organizationId'
      responses:
        '201':
          description: Details of the organziation's current subscription
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingSubscription'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Not found
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /organizations/{organizationId}/billing/subscription/coupon:
    put:
      summary: Add coupon to subscription
      operationId: applyCouponForSubscription
      tags:
      - Organizations
      parameters:
      - $ref: '#/components/parameters/organizationId'
      requestBody:
        description: User new fields data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BillingSubscriptionCoupon'
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingSubscription'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Not found
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
  /organizations/{organizationId}:
    get:
      summary: Find an organization by ID
      operationId: getOrganizationById
      tags:
      - Organizations
      parameters:
      - $ref: '#/components/parameters/organizationId'
      responses:
        '200':
          description: Organization response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Organization'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: Not found
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
    put:
      summary: Update an organization by ID
      operationId: updateOrganizationById
      tags:
      - Organizations
      parameters:
      - $ref: '#/components/parameters/organizationId'
      requestBody:
        description: User new fields data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationFields'
        required: true
      responses:
        '200':
          description: successful operation - organization fields updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationResponse'
        '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: []
  /organizations/{organizationId}/address:
    put:
      summary: Update an organization address by ID
      operationId: updateOrganizationAddressById
      tags:
      - Organizations
      parameters:
      - $ref: '#/components/parameters/organizationId'
      requestBody:
        description: User new fields data
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationAddressFields'
        required: true
      responses:
        '200':
          description: successful operation - organization fields updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationResponse'
        '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: []
  /organizations/{organizationId}/ssoProvider:
    get:
      operationId: getSsoProviderForOrganization
      tags:
      - Organizations
      summary: Get SSO provider configuration for organization
      parameters:
      - $ref: '#/components/parameters/organizationId'
      responses:
        '200':
          description: Successfully retrieved SSO provider configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SsoProvider'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: SSO provider not found
          content:
            application/json:
              schema:
                $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
    post:
      operationId: createSsoProvider
      tags:
      - Organizations
      summary: Create SSO provider configuration for organization
      parameters:
      - $ref: '#/components/parameters/organizationId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SsoProviderCreateRequest'
      responses:
        '201':
          description: Successfully created SSO provider configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SsoProvider'
        '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: []
  /organizations/{organizationId}/ssoProvider/{ssoProviderId}:
    put:
      operationId: updateSsoProvider
      tags:
      - Organizations
      summary: Update SSO provider configuration
      parameters:
      - $ref: '#/components/parameters/organizationId'
      - name: ssoProviderId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: The SSO provider ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SsoProviderUpdateRequest'
      responses:
        '200':
          description: Successfully updated SSO provider configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SsoProvider'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: SSO provider not found
          content:
            application/json:
              schema:
                $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
    delete:
      operationId: deleteSsoProvider
      tags:
      - Organizations
      summary: Delete SSO provider configuration
      parameters:
      - $ref: '#/components/parameters/organizationId'
      - name: ssoProviderId
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: The SSO provider ID
      responses:
        '204':
          description: Successfully deleted SSO provider configuration
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          description: SSO provider not found
          content:
            application/json:
              schema:
                $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
      - bearerAuth: []
components:
  schemas:
    OptionalNonEmptyUrlWith255MaxLength:
      type: string
      pattern: ^$|^(https?:\/\/)?[a-z0-9]+([-.]+[a-z0-9]+)*\.[a-z]{2,10}([0-9]{1,5})?(\/.*)?$
      example: https://website-sample.com
      maxLength: 255
    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
    BillingSubscriptionPlanTypeEnum:
      type: string
      enum:
      - free
      - advanced
      - enterprise
      - standard
    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
    OptionalNonEmptyStringWith50MaxLength:
      type: string
      pattern: ^$|^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'|]+(?<=\S)$
      example: An example name
      maxLength: 50
    OrganizationAddressFields:
      type: object
      properties:
        addressLine1:
          $ref: '#/components/schemas/OptionalNonEmptyStringWith255MaxLength'
        addressLine2:
          $ref: '#/components/schemas/OptionalNonEmptyStringWith255MaxLength'
        city:
          $ref: '#/components/schemas/OptionalNonEmptyStringWith50MaxLength'
        region:
          $ref: '#/components/schemas/OptionalNonEmptyStringWith50MaxLength'
        postalCode:
          $ref: '#/components/schemas/OptionalNonEmptyStringWith50MaxLength'
        country:
          $ref: '#/components/schemas/IsoCountryCode'
    WalletKeyShareInfo:
      type: object
      required:
      - id
      - backupLocation
      - passwordEncrypted
      properties:
        id:
          $ref: '#/components/schemas/uuid'
        backupLocation:
          type: string
        passwordEncrypted:
          type: boolean
        externalKeyShareId:
          $ref: '#/components/schemas/uuid'
    Organization:
      type: object
      required:
      - id
      - name
      properties:
        id:
          $ref: '#/components/schemas/uuid'
        name:
          type: string
          example: Acme Corp
        description:
          $ref: '#/components/schemas/OptionalNonEmptyString'
        websiteUrl:
          $ref: '#/components/schemas/OptionalNonEmptyUrl'
        address:
          $ref: '#/components/schemas/OrganizationAddressFields'
        role:
          $ref: '#/components/schemas/RoleEnum'
    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
    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'
    SsoProviderEnum:
      type: string
      enum:
      - okta
    InternalServerError:
      type: object
      properties:
        error:
          type: string
          example: Internal Server Error
    RoleEnum:
      type: string
      enum:
      - owner
      - admin
      - developer
      - viewer
    SsoProvider:
      type: object
      required:
      - id
      - clientId
      - organizationId
      - ssoDomain
      - emailDomain
      - provider
      - createdAt
      - updatedAt
      - maskedClientSecret
      - enforceOnlySSO
      properties:
        id:
          $ref: '#/components/schemas/uuid'
        clientId:
          type: string
          description: Client ID for the SSO provider
        maskedClientSecret:
          type: string
          description: Masked client secret for the SSO provider
        organizationId:
          $ref: '#/components/schemas/uuid'
        ssoDomain:
          type: string
          description: SSO domain for the provider
        emailDomain:
          type: string
          description: Email domain for the company emails to be used for SSO
        provider:
          $ref: '#/components/schemas/SsoProviderEnum'
        redirectUrl:
          type: string
          description: Redirect URL for the SSO provider
        enforceOnlySSO:
          type: boolean
          description: Whether SSO is enforced for this domain
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        ssoDomainVerifiedAt:
          type: string
          format: date-time
          description: Timestamp when the SSO domain was verified by Dynamic API. This will be present when the SSO domain ownership has been verified by setting a TXT record in DNS.
        ssoDomainVerificationChallenge:
          type: string
          description: TXT record challenge string for the SSO domain verification. This will be provided when the SSO provider domain ownership needs to be verified by setting a TXT record in DNS.
    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
    MfaBackupCodeAcknowledgement:
      type: string
      nullable: true
      enum:
      - pending
      - complete
    KycFieldType:
      type: string
      enum:
      - standard
      - custom
    NameServiceData:
      type: object
      properties:
        avatar:
          type: string
        name:
          type: string
    NonEmptyUrlWith255MaxLength:
      type: string
      pattern: ^(https?:\/\/)?[a-z0-9]+([-.]+[a-z0-9]+)*\.[a-z]{2,10}([0-9]{1,5})?(\/.*)?$
      maxLength: 255
      example: https://website-sample.com
    OrganizationRequest:
      type: object
      required:
      - name
      properties:
        name:
          $ref: '#/components/schemas/NonEmptyStringWith255MaxLength'
        description:
          $ref: '#/components/schemas/NonEmptyStringWith255MaxLength'
        websiteUrl:
          $ref: '#/components/schemas/NonEmptyUrlWith255MaxLength'
        implementationTimeline:
          $ref: '#/components/schemas/WhenToImplementEnum'
    OptionalNonEmptyString:
      type: string
      pattern: ^$|^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'|]+(?<=\S)$
      example: An example name
    SsoProviderCreateRequest:
      type: object
      required:
      - clientId
      - clientSecret
      - ssoDomain
      - provider
      - emailDomain
      properties:
        clientId:
          type: string
          maxLength: 255
          description: Client ID for the SSO provider
        clientSecret:
          type: string
          maxLength: 255
          description: Client secret for the SSO provider
        ssoDomain:
          type: string
          maxLength: 255
          description: SSO domain for the provider
        emailDomain:
          type: string
          maxLength: 255
          description: Email domain for the company emails to be used for SSO
        provider:
          $ref: '#/components/schemas/SsoProviderEnum'
    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'
    WalletProperties:
      anyOf:
      - $ref: '#/components/schemas/TurnkeyWalletProperties'
      - $ref: '#/components/schemas/HardwareWalletProperties'
      - $ref: '#/components/schemas/CoinbaseMpcWalletProperties'
      - $ref: '#/components/schemas/SmartWalletProperties'
      - $ref: '#/components/schemas/WaasWalletProperties'
    WhenToImplementEnum:
      type: string
      enum:
      - yesterday
      - nextTwoWeeks
      - nextTwoMonths
      - justBrowsing
    NonEmptyStringWith255MaxLengthAndSpecialChars:
      type: string
      pattern: ^(?=\S)[\p{L}\p{N}a-zA-Z _.,:!?&%@\/+\-'()\[\]*]+(?<=\S)$
      maxLength: 255
      example: An example name
    EmbeddedWalletVersionEnum:
      type: string
      enum:
      - V1
      - V2
      - V3
    OrganizationsResponse:
      type: object
      properties:
        organizations:
          type: array
          items:
            $ref: '#/components/schemas/Organization'
    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'
    IsoCountryCode:
      type: string
      description: ISO 3166-1 alpha-2 country code
      pattern: ^[a-zA-Z]{2}$
      maxLength: 2
      example: US
    BillingSubscriptionCoupon:
      type: object
      required:
      - coupon
      properties:
        coupon:
          $ref: '#/components/schemas/NonEmptyStringWith255MaxLength'
    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'
    SsoProviderUpdateRequest:
      type: object
      properties:
        clientId:
          type: string
          maxLength: 255
          description: Client ID for the SSO provider
        clientSecret:
          type: string
          maxLength: 255
          description: Client secret for the SSO provider
        ssoDomain:
          type: string
          maxLength: 255
          description: SSO domain for the provider
        emailDomain:
          type: string
          maxLength: 255
          description: Email domain for the company emails to be used for SSO
        provider:
          $ref: '#/components/schemas/SsoProviderEnum'
        enforceOnlySSO:
          type: boolean
          description: when set to true it would enforce sso auth to the domain
    OrganizationFields:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/NonEmptyStringWith255MaxLength'
        description:
          $ref: '#/components/schemas/OptionalNonEmptyStringWith255MaxLength'
        websiteUrl:
          $ref: '#/components/schemas/OptionalNonEmptyUrlWith255MaxLength'
      required:
      - name
    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'
    HardwareWalletEnum:
      type: string
      enum:
      - ledger
    SdkUser:
      allOf:
      - $ref: '#/components/schemas/BaseUser'
      - type: object
        required:
        - verifiedCredentials
    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'
    BillingSubscription:
      type: object
      required:
      - hasPaymentMethod
      - planType
      - inTrial
      - scope
      - version
      properties:
        billingPortalUrl:
          type: string
        billingPortalAddPaymentMethodUrl:
          type: string
        hasPaymentMethod:
          type: boolean
        planType:
          $ref: '#/components/schemas/BillingSubscriptionPlanTypeEnum'
        inTrial:
          type: boolean
        scope:
          type: array
          items:
            type: string
        trialStart:
          type: string
          format: date-time
        trialEnd:
          type: string
          format: date-time
        trialDaysLeft:
          type: number
        currentBillingPeriod:
          $ref: '#/components/schemas/BillingSubscriptionPeriod'
        version:
          type: string
        shouldLockEnvironmentSwitch:
          type: boolean
        coupons:
          type: array
          items:
            $ref: '#/components/schemas/BillingSubscriptionCoupon'
    OrganizationResponse:
      type: object
      properties:
        organization:
          type: object
          required:
          - id
          - name
          properties:
            id:
              $ref: '#/components/schemas/uuid'
            name:
              type: string
              example: Acme Corp
            description:
              $ref: '#/components/schemas/OptionalNonEmptyString'
            websiteUrl:
              $ref: '#/components/schemas/OptionalNonEmptyUrl'
            address:
              $ref: '#/components/schemas/OrganizationAddressFields'
    Forbidden:
      type: object
      properties:
        error:
          type: string
          example: Access Forbidden
    MergeUser:
      type: object
      description: Contains the current field value for the user.
      required:
      - userId
      - value
      properties:
        userId:
          $ref: '#/components/schemas/uuid'
        value:
          $ref: '#/components/schemas/NonEmptyStringWith255MaxLength'
    UnprocessableEntityErrorCode:
      type: string
      enum:
      - email_cannot_be_null
      - exchange_cannot_be_enabled
      - transfer_amount_too_small
      - transfer_address_not_whitelisted
      - invalid_scopes
      - unknown_transfer_error
      - transfer_mfa_required
      - transfer_mfa_failed
      - invalid_transfer_funds
      - invalid_transfer_currency
      - invalid_exchange_provider
      - invalid_transfer_network
      - invalid_email
      - email_already_exists
      - allowlist_already_exists
      - allowlist_entry_already_exists
      - reassign_wallet_error
      - reassign_wallet_confirm
      - members_cannot_delete_themself
      - username_already_exists
      - wrong_email_verification_token
      - wrong_sms_verification_token
      - invalid_email_verification
      - invalid_sms_verification
      - invalid_verification
      - invalid_position
      - too_many_sms_verification_attempts
      - too_many_email_verification_attempts
      - too_many_verification_attempts
      - organization_name_already_exists
      - project_name_already_exists
      - wallet_not_deployed
      - email_verification_required
      - phone_verification_required
      - invite_address_required
      - provider_not_available
      - forbidden_unlink_request
      - invalid_unlink_request
      - too_many_api_tokens
      - lock_timeout
      - lock_too_many_attempts
      - nft_token_gating_not_supported_for_chain
      - empty_chain_name
      - no_enabled_email_provider
      - no_enabled_sms_provider
      - invalid_key_export_url
      - invalid_dynamic_props
      - too_many_requests
      - too_many_organizations_for_user
      - too_many_projects_for_organization
      - email_associated_with_different_provider
      - user_has_already_account_with_email
      - user_has_already_account_with_phone_number
      - other_verify_failure
      - email_tied_to_embedded_wallet
      - invalid_invite
      - social_account_already_exists
      - invalid_email_address
      - invalid_gate
      - conflicting_embedded_wallet_providers
      - invalid_user
      - invalid_cors_origins
      - invalid_mobile_deeplink_urls
      - unauthorized_mobile_deeplink_url
      - invalid_private_key_format
      - invalid_embedded_wallet_settings
      - wallet_not_support_passkey
      - recovery_email_unavailable_or_invalid
      - connect_error
      - invalid_wallet_name
      - invalid_wallet_address
      - email_recovery_disabled
      - no_compatible_wallet_service_enabled
      - missing_aa_project_id
      - linked_embedded_wallet
      - invalid_mpc_environment
      - invalid_regex
      - repeated_options
      - missing_phone_number_or_email
      - duplicate_exists
      - mfa_device_not_found
      - mfa_invalid_code
      -

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