Unstoppable Domains account API

Manage your account details

OpenAPI Specification

unstoppable-domains-account-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Web3 Partner API v3 account API
  version: 3.0.0
  contact:
    name: Unstoppable Domains (Partner Engineering)
    email: partnerengineering@unstoppabledomains.com
  description: "# Feature Overview\nThe Web3 Partner API v3 provides you with the ability to lookup, register and manage Web3 domains. The API exposes a RESTful interface for interacting with Web3 domains and the Unstoppable Domains registry.\n- Lookup Domains: Search for specific domains or find suggested alternatives, to determine pricing, availability and on-chain details\n- Registering Domains: Secure domains into your dedicated Custody wallets to maintain the domains on the blockchain\n- Manage Domains: Update records on the blockchain or transfer the domain to external owners, all through a simple API interface\n\n## Custody Solution\nThe API takes the hassle of Web3 out of the equation. Unstoppable Domains will handle all blockchain interactions and concepts, while Partners simply use a RESTful API for managing domains.\n\nSince the domains will be in custody of the Partner, through Unstoppable Domains, the Partner is empowered to make any and all changes to the domains on behalf of their users.\n\nUnder the hood, Unstoppable Domains will manage dedicated custodial wallets for Partner-owned domains. These wallets are not shared between Partners and will uniquely identify the Partner on the various supported blockchains.\n\nShould the need arise to remove domains from custody, this is supported by changing the owner of domains to external owners.\n\n## Payments\nThe API will keep track of a running balance of charges and Unstoppable Domains will periodically invoice Partners to settle that balance. This empowers Partners to build payment processing in a way that works best for them.\n\n\n## Blockchain Support\nDomain details can be viewed across all of our supported blockchains:\n- Ethereum (ETH)\n- Polygon PoS (MATIC)\n- Base (BASE)\n\nDomains can **only be managed on Polygon PoS (MATIC) and Base (BASE)**. Domains on Ethereum (ETH) are readonly, but management support is coming soon.\n\n# Important Concepts\nThe API has some important concepts, in addition to Web3 Domains, that provide added utility, consistency and information.\n\n## Domain Ownership Type\nWeb3 domains exist on the supported Blockchains, and are owned by wallet addresses associated with those Blockchains. \nWe take ownership a step further, to provide improved security and reliability, by including an owner `type` in our ownership data.\nThe result is that a Domain's owner is defined by two values: `address` and `type`\n\nThe owner `type` can be one of the following:\n- `NONE`: Either the domain has never been owned or belongs to a \"burn\" address\n- `UD`: Owned by Unstoppable Domains\n- `SELF`: Domain belongs to a wallet addressed associated with your account, indicating you are able to manage it via the API\n- `EXTERNAL`: Owner doesn't qualify as any of the above. Changing to an `EXTERNAL` owner will result in the domain belonging to an address outside of the management of Unstoppable Domains and we will have no way to recover it.\n\nBy defining an owner in two parts (`address` and `type`) we ensure any irreversible action, such as transferring ownership, is deliberate and intended by requiring both the `address` and `type` in the request.\n\n## Operations\nAll interactions with the API that initiate changes will create an Operation for tracking that change.\nOperations can complete immediately or run in the background over the course of several minutes, depending on the Operation type and current conditions on the Blockchain.\n\nOperations include dependencies that represent the smaller units of work associated with the overall operation. These dependencies can also be tracked through the API and each have their own status and metadata.\n\nYour integration should properly handle and anticipate all of the following possible statuses for Operations and their dependencies:\n- `QUEUED` : The Operation has not started processing yet, but should be started shortly\n- `PROCESSING` : The Operation has started, often involving sending transactions to the Blockchain\n- `SIGNATURE_REQUIRED`: The operation is awaiting a signature in order to continue processing. This is only relevant to Self-Custody domain management.\n- `COMPLETED` : The Operation has finished processing successfully\n- `FAILED` : The Operation has finished processing and has either fully or partially failed\n- `CANCELLED` : The Operation has been cancelled, usually due to a failure with a sibling dependency\n\nSee the [Operations](/openapi/partner/v3/#tag/operations) API for additional information.\n\n## Wallets\nDomains ownership on the Blockchain is handled by associating a Domain with an \"address\". These addresses are typically managed by Wallets (usually in the form of an application on your computer or mobile device) that manage the private key for the public \"address\".\n\nThe API provides endpoints for creating/managing Wallets within your account to enable you to handle Domain ownership distribution in whatever way works for you. Any Domain that is owned by one of your account's Wallets is fully in your control to manage.\n\nSee the [Wallets](/openapi/partner/v3/#tag/wallets) API for additional information.\n\n# Get Access\nSee our quickstart guide for getting your Partner API key: [Set up Partner API Access](https://docs.unstoppabledomains.com/domain-distribution-and-management/quickstart/retrieve-an-api-key/)\n\nIf you have any questions, contact our [Partner Engineering Team](mailto:partnerengineering@unstoppabledomains.com?subject=Partner%20API%20v3%20Inquiry) to help with API access or learn more.\n"
servers:
- url: https://api.unstoppabledomains.com/partner/v3
  description: Production
- url: https://api.ud-sandbox.com/partner/v3
  description: Sandbox
security:
- bearer: []
tags:
- name: account
  x-displayName: Account
  description: Manage your account details
paths:
  /account:
    get:
      operationId: getAccount
      summary: Get account details
      parameters: []
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountSummaryResponse'
      tags:
      - account
    patch:
      operationId: updateAccount
      summary: Update account details
      description: 'Change your default wallet address, which is used when no wallet address is specified during domain registration.

        '
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountUpdateRequestBody'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountUpdateResponse'
        400:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ValidationError:
                  $ref: '#/components/examples/ValidationError'
      tags:
      - account
  /account/billing:
    get:
      operationId: getBilling
      parameters: []
      responses:
        '200':
          description: Account billing balance
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountBillingResponse'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '403':
          description: Insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
      tags:
      - account
      summary: Get account billing balance
      description: 'Retrieve the current billing balance for your account in USD cents. Negative values represent credits available; positive values represent amounts owed.

        '
  /account/billing/transactions:
    get:
      operationId: getTransactions
      parameters:
      - name: $cursor
        required: false
        in: query
        schema:
          type: string
        description: Opaque cursor for paginating through results. Use the value from `next.$cursor` in a previous response.
      - name: type
        required: false
        in: query
        schema:
          type: array
          items:
            $ref: '#/components/schemas/BalanceChangeType'
        description: Filter transactions by type. Repeat the parameter or pass a comma-separated list to filter on multiple types.
      - name: groupBy
        required: false
        in: query
        schema:
          type: string
          enum:
          - operationId
        description: When set to `operationId`, transactions are grouped by their originating operation and returned as `BillingTransactionGroup` items.
      responses:
        '200':
          description: List of billing transactions
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/BillingTransactionListResponse'
                - $ref: '#/components/schemas/BillingTransactionGroupListResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '403':
          description: Insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
      tags:
      - account
      summary: List billing transactions
      description: 'List billing transactions for your account. Each transaction represents a credit or debit applied to your balance (orders, refunds, settlements, grants, revenue share, etc.).


        Filter by `type` to narrow results to specific balance-change categories. Pass `groupBy=operationId` to receive transactions grouped by their originating operation, with each group reporting the total amount and associated domain.


        Results are paginated — use the `$cursor` parameter to retrieve subsequent pages.

        '
  /account/domain-registrations:
    get:
      operationId: getAccountDomainRegistrations
      parameters:
      - name: $cursor
        required: false
        in: query
        schema:
          type: string
        description: Opaque cursor for paginating through results. Omit it to fetch the first page, then pass the value from `next.$cursor` in the previous response to fetch each subsequent page.
      - name: $expand
        required: false
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - flags
        description: Use `$expand=flags` to additionally include the EPP domain flags for each returned domain.
      responses:
        '200':
          description: A page of domains in your account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountDomainListResponse'
              examples:
                AccountDomains:
                  summary: A page of domains in your account
                  value:
                    '@type': unstoppabledomains.com/partner.v3.CursorList
                    items:
                    - '@type': unstoppabledomains.com/partner.v3.AccountDomain
                      name: example.com
                      status: REGISTERED
                      namingSystem: ICANN
                      expirationTimestamp: 1684356429790
                    - '@type': unstoppabledomains.com/partner.v3.AccountDomain
                      name: example.org
                      status: REGISTERED
                      namingSystem: ICANN
                      expirationTimestamp: null
                    next:
                      $cursor: k7Hs9Lm2Pq4Rt6Vw8Xz0Yb1Nc3Df5Gh
                AccountDomainsWithFlags:
                  summary: A page of domains expanded with EPP domain flags via `$expand=flags`
                  value:
                    '@type': unstoppabledomains.com/partner.v3.CursorList
                    items:
                    - '@type': unstoppabledomains.com/partner.v3.AccountDomain
                      name: example.com
                      status: REGISTERED
                      namingSystem: ICANN
                      expirationTimestamp: 1684356429790
                      flags:
                        DNS_RESOLUTION:
                          '@type': unstoppabledomains.com/partner.v3.DomainFlag
                          status: ENABLED
                        DNS_TRANSFER_OUT:
                          '@type': unstoppabledomains.com/partner.v3.DomainFlag
                          status: DISABLED
                          readonly:
                            state: true
                            reasons:
                            - type: REGISTRY
                              id: LOCKED_REGISTRY
                              status: ENABLED
                        DNS_DELETE:
                          '@type': unstoppabledomains.com/partner.v3.DomainFlag
                          status: DISABLED
                        DNS_UPDATE:
                          '@type': unstoppabledomains.com/partner.v3.DomainFlag
                          status: ENABLED
                        DNS_RENEW:
                          '@type': unstoppabledomains.com/partner.v3.DomainFlag
                          status: ENABLED
                        DNS_WHOIS_PROXY:
                          '@type': unstoppabledomains.com/partner.v3.DomainFlag
                          status: ENABLED
                    next: null
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '403':
          description: Insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
      tags:
      - account
      summary: List account domains
      description: 'Retrieve a paginated list of the domains in your account.


        Results are returned using cursor-based pagination. Omit `$cursor` to fetch the first page, then pass the `next.$cursor` value from the previous page response to fetch each subsequent page. When `next` is `null` there are no more pages.


        Use `$expand=flags` to additionally include the EPP domain flags for each returned domain.

        '
  /account/webhooks:
    get:
      operationId: getWebhooks
      parameters: []
      responses:
        '200':
          description: List of webhooks
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookListResponse'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '403':
          description: Insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
      tags:
      - account
      summary: List webhooks
      description: 'Retrieve all webhook subscriptions configured for your account.

        '
    post:
      operationId: createWebhook
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookCreateRequestBody'
      responses:
        '201':
          description: Webhook created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookCreateResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '403':
          description: Insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '409':
          description: Resource conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
      tags:
      - account
      summary: Create a webhook
      description: 'Create a new webhook subscription. Webhooks notify your server of asynchronous events such as operation completions and status changes.


        You can follow our getting started guide here: [Webhooks in the Reseller API](https://docs.unstoppabledomains.com/domain-distribution-and-management/guides/implementing-webhooks/)

        '
  /account/webhooks/{id}:
    get:
      operationId: getWebhook
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
          pattern: ^wh-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
          example: wh-a1b2c3d4-e5f6-7890-abcd-ef1234567890
        description: 'Webhook ID (format: wh-<uuid>)'
      responses:
        '200':
          description: Webhook details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '403':
          description: Insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
      tags:
      - account
      summary: Get a webhook
      description: 'Retrieve details of a specific webhook subscription by ID.

        '
    delete:
      operationId: deleteWebhook
      parameters:
      - name: id
        required: true
        in: path
        schema:
          type: string
          pattern: ^wh-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
          example: wh-a1b2c3d4-e5f6-7890-abcd-ef1234567890
        description: 'Webhook ID (format: wh-<uuid>)'
      responses:
        '200':
          description: Webhook deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookDeleteResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '403':
          description: Insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse_2'
      tags:
      - account
      summary: Delete a webhook
      description: 'Delete a webhook subscription by ID.

        '
  /api/oauth/signup:
    post:
      operationId: oauthSignup
      summary: Create an account via email and password (headless)
      description: Step 1 of headless account creation. Registers a new user with email and password, sends a verification code via email, and returns a signup_session_token. Use POST /api/oauth/signup/verify with the token and code to get OAuth tokens. Returns identical responses for new and existing users to prevent account enumeration.
      tags:
      - account
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - email
              - password
              properties:
                email:
                  type: string
                  format: email
                  description: Email address for the new account
                password:
                  type: string
                  minLength: 8
                  description: Password with at least 8 characters, one uppercase, one lowercase, one digit, and one special character
      responses:
        '200':
          description: Signup session created
          content:
            application/json:
              schema:
                type: object
                properties:
                  signup_session_token:
                    type: string
                    description: Token to use with /api/oauth/signup/verify
                  expires_in:
                    type: number
                    description: Session TTL in seconds (900)
        '400':
          description: Invalid email, password, or disposable email
        '429':
          description: Rate limit exceeded
  /api/oauth/signup/verify:
    post:
      operationId: oauthSignupVerify
      summary: Verify signup code and get OAuth tokens
      description: Step 2 of headless account creation. Exchanges the signup_session_token and the 6-character verification code (sent via email) for OAuth access and refresh tokens.
      tags:
      - account
      security: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - signup_session_token
              - verification_code
              properties:
                signup_session_token:
                  type: string
                  description: Token from POST /api/oauth/signup
                verification_code:
                  type: string
                  description: 6-character alphanumeric code from the verification email
      responses:
        '200':
          description: OAuth tokens issued
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    type: string
                  token_type:
                    type: string
                    enum:
                    - Bearer
                  expires_in:
                    type: number
                  refresh_token:
                    type: string
                  scope:
                    type: string
        '400':
          description: Invalid or expired session, wrong code, or too many attempts
        '429':
          description: Rate limit exceeded
components:
  schemas:
    BillingTransactionResponse:
      type: object
      properties:
        '@type':
          type: string
          enum:
          - unstoppabledomains.com/partner.v3.BillingTransaction
        id:
          type: string
          pattern: ^btx-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
          example: btx-a1b2c3d4-e5f6-7890-abcd-ef1234567890
          description: Billing transaction ID
        type:
          $ref: '#/components/schemas/BalanceChangeType'
        amountUsdCents:
          type: integer
          description: Transaction amount in USD cents. Negative for credits applied to the account; positive for debits charged against the account.
        operationId:
          type: string
          pattern: ^op-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
          example: op-a1b2c3d4-e5f6-7890-abcd-ef1234567890
          description: ID of the operation that produced this transaction
        createdAtTimestamp:
          type: integer
          format: int64
          description: Unix epoch timestamp (milliseconds) when the transaction was created
        notes:
          type: string
          nullable: true
          description: Optional notes describing the transaction
      required:
      - '@type'
      - id
      - type
      - amountUsdCents
      - operationId
      - createdAtTimestamp
      - notes
    WebhookCreateResponse:
      type: object
      properties:
        '@type':
          type: string
          enum:
          - unstoppabledomains.com/partner.v3.WebhookCreateResult
        operation:
          $ref: '#/components/schemas/OperationCheckResponse_2'
      required:
      - '@type'
      - operation
    PlatformOperationContactCreate:
      type: object
      description: Creates a new contact for use in domain registration or management
      properties:
        id:
          type: string
          example: plop_abc12345-1234-1234-1234-abc123456789
        '@type':
          type: string
          enum:
          - unstoppabledomains.com/partner.v3.PlatformOperation
        status:
          $ref: '#/components/schemas/PlatformOperationStatus'
        type:
          type: string
          enum:
          - CONTACT_CREATE
        parameters:
          type: object
          properties:
            purposes:
              type: array
              items:
                $ref: '#/components/schemas/ContactPurpose'
              description: Intended roles for this contact
              example:
              - OWNER
              - ADMIN
          required:
          - purposes
        result:
          type: object
          properties:
            id:
              type: string
              description: ID of the created contact
              example: ct-a1b2c3d4-e5f6-7890-abcd-ef1234567890
          required:
          - id
        error:
          $ref: '#/components/schemas/OperationDependencyError'
      required:
      - id
      - '@type'
      - status
      - type
      - parameters
    PlatformSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/SubOperationResponse'
      - type: object
        properties:
          '@type':
            type: string
            enum:
            - unstoppabledomains.com/partner.v3.PlatformOperation
        required:
        - '@type'
    SubOperationResponse:
      type: object
      properties:
        id:
          type: string
          example: bc-2db427bd-5613-40c7-85b1-ab38beed0ed0
        status:
          $ref: '#/components/schemas/OperationStatus'
      required:
      - status
      - id
    PlatformOperationDomainFlagLockUpdate:
      type: object
      description: Updates domain flag lock settings (e.g., transfer lock, delete lock)
      properties:
        id:
          type: string
          example: plop_abc12345-1234-1234-1234-abc123456789
        '@type':
          type: string
          enum:
          - unstoppabledomains.com/partner.v3.PlatformOperation
        status:
          $ref: '#/components/schemas/PlatformOperationStatus'
        type:
          type: string
          enum:
          - DOMAIN_FLAG_LOCK_UPDATE
        parameters:
          type: object
          properties:
            locks:
              $ref: '#/components/schemas/DomainFlagLocks'
            policyLocks:
              $ref: '#/components/schemas/DomainFlagLocks'
        error:
          $ref: '#/components/schemas/OperationDependencyError'
      required:
      - id
      - '@type'
      - status
      - type
      - parameters
    AccountDomainResponse:
      type: object
      properties:
        '@type':
          type: string
          enum:
          - unstoppabledomains.com/partner.v3.AccountDomain
        name:
          type: string
          description: The fully qualified domain name.
          example: example.com
        status:
          $ref: '#/components/schemas/AccountDomainStatus'
        namingSystem:
          type: string
          description: The naming system the domain is registered under.
          enum:
          - UNS
          - ICANN
          - ENS
        blockchain:
          type: string
          description: The blockchain the domain is minted on. Present for tokenized (web3) domains only.
          enum:
          - MATIC
          - ETH
          - ZIL
          - BASE
          - SOL
          - SONIC
        expirationTimestamp:
          type: integer
          format: int64
          nullable: true
          description: Unix epoch timestamp (milliseconds) when the domain expires, or `null` when the domain has no expiration.
        flags:
          description: EPP domain flags for the domain. Only included when `$expand=flags` is set.
          allOf:
          - $ref: '#/components/schemas/DomainFlagsSubResponse'
      required:
      - '@type'
      - name
      - status
      - namingSystem
      - expirationTimestamp
    OwnerAddress:
      oneOf:
      - $ref: '#/components/schemas/EvmOwnerAddress'
    ErrorResponseContextEntityMulti:
      type: object
      properties:
        type:
          type: string
          enum:
          - MULTI_VALUE
        values:
          type: array
          items:
            $ref: '#/components/schemas/ErrorResponseContextEntitySingle'
      required:
      - type
      - values
    WalletSetDefaultSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/PlatformSubOperationResponse'
      - type: object
        properties:
          parameters:
            $ref: '#/components/schemas/WalletSetDefaultParametersResponse'
          type:
            type: string
            enum:
            - WALLET_SET_DEFAULT
        required:
        - parameters
        - type
    BlockchainSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/SubOperationResponse'
      - type: object
        properties:
          '@type':
            type: string
            enum:
            - unstoppabledomains.com/partner.v3.BlockchainOperation
          transaction:
            $ref: '#/components/schemas/SubOperationTransactionResponse'
        required:
        - '@type'
    DomainFlagConfigurationReadonlyResponse:
      type: object
      properties:
        state:
          type: boolean
        reasons:
     

# --- truncated at 32 KB (68 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/unstoppable-domains/refs/heads/main/openapi/unstoppable-domains-account-api-openapi.yml