Unstoppable Domains domains API

Manage your custody domains.

Operations 7

PATCH /domains/{name} Update a domain (partial update) #
PUT /domains/{name} Update a domain (overwriting update) #
DELETE /domains/{name} Return and refund a domain #
GET /domains/{domainName} Get domain #
GET /domains Get domains list #
GET /domains/{domainName}/transfers/latest Get domains last transfer #
GET /records Get domains records #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/unstoppable-domains-domains-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

unstoppable-domains-domains-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Unstoppable Domains API
  contact:
    name: Unstoppable Domains (Partner Engineering)
    email: partnerengineering@unstoppabledomains.com
  version: '1.0'
  description: 'Operations tagged domains across 2 of this provider''s published API definitions: unstoppable-domains-partner-api-openapi.yaml, unstoppable-domains-resolution-api-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.unstoppabledomains.com/partner/v3
  description: Production
- url: https://api.ud-sandbox.com/partner/v3
  description: Sandbox
- url: https://api.unstoppabledomains.com/resolve
  description: Production
- url: https://api.ud-sandbox.com/resolve
  description: Sandbox
tags:
- name: domains
  x-displayName: Custody Domains
  description: Manage your custody domains.
paths:
  /domains/{name}:
    patch:
      operationId: updateDomainPatch
      summary: Update a domain (partial update)
      description: "Perform Domain updates while preserving the existing records.\n\n### Change Owner with Records Preserved\n```\n{\n  \"owner\": {\n    \"type\": \"EXTERNAL\",\n    \"address\": \"0x123\"\n  }\n}\n```\nChanges owner to the new owner address without modifying the domain records.\n\n#### Owner Types\nWhen changing owner of a domain, you must provide both a `type` and an `address` to clearly indicate the intent of the change.\n- `NONE`: Used when changing the owner to a \"burn\" address, which will result in nobody owning the domain\n  - Valid \"burn\" addresses are `0x0000000000000000000000000000000000000000` and `0x000000000000000000000000000000000000dEaD`\n- `UD`: Used when changing the owner to an addressed owned by Unstoppable Domains\n- `SELF`: Used when changing the owner to another address that belongs to your account\n- `EXTERNAL`: Used when changing the owner to address that doesn't qualify as any of the above. \n  - _WARNING_: This 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\n### Update Records with existing Records Preserved\n```\n{\n  \"records\": {\n    \"key2\": \"value2\"\n  }\n}\n```\nWhen applied to a domain with existing records, or with an existing `key2`, will result in only the `key2` value being set to the new value.\n\nSee [our documentation](https://docs.unstoppabledomains.com/resolution/guides/records-reference/) for more information on standardized keys.\n"
      parameters:
      - name: name
        required: true
        in: path
        schema:
          $ref: '#/components/schemas/DomainName'
      - name: $preview
        in: query
        schema:
          $ref: '#/components/schemas/OperationPreviewParameter'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainUpdateRequestBody'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainOperationResponse'
        400:
          description: Validation error or bad request due to domain custody, unsupported blockchain, etc.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ValidationError:
                  $ref: '#/components/examples/ValidationError'
                NoChange:
                  $ref: '#/components/examples/NoChange'
                ConcurrentOperation:
                  $ref: '#/components/examples/ConcurrentOperation'
                CustodyRequired:
                  $ref: '#/components/examples/CustodyRequired'
                UnsupportedBlockchain:
                  $ref: '#/components/examples/UnsupportedBlockchain'
                BadRequest:
                  $ref: '#/components/examples/BadRequest'
        502:
          $ref: '#/components/responses/502BadGateway'
      tags:
      - domains
      security:
      - bearer: []
    put:
      operationId: updateDomainPut
      summary: Update a domain (overwriting update)
      description: "Perform Domain updates while doing full resets of the records.\n\n### Change Owner with Record Reset\n```\n{\n  \"owner\": {\n    \"type\": \"EXTERNAL\",\n    \"address\": \"0x123\"\n  },\n  \"records\": {}\n}\n```\nClears all records from the domain, then changes owner to the new owner address.\n\nNOTE: You must include `\"records\": {}` to indicate the intent to clear records.\n\n#### Owner Types\nWhen changing owner of a domain, you must provide both a `type` and an `address` to clearly indicate the intent of the change.\n- `NONE`: Used when changing the owner to a \"burn\" address, which will result in nobody owning the domain\n  - Valid \"burn\" addresses are `0x0000000000000000000000000000000000000000` and `0x000000000000000000000000000000000000dEaD`\n- `UD`: Used when changing the owner to an addressed owned by Unstoppable Domains\n- `SELF`: Used when changing the owner to another address that belongs to your account\n- `EXTERNAL`: Used when changing the owner to address that doesn't qualify as any of the above.\n  - _WARNING_: This 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\n### Update Records with Record Reset\n```\n{\n  \"records\": {\n    \"key2\": \"value2\"\n  }\n}\n```\nWhen applied to a domain with existing records, only `key2` will remain after the update is complete.\n\nSee [our documentation](https://docs.unstoppabledomains.com/resolution/guides/records-reference/) for more information on standardized keys.\n"
      parameters:
      - name: name
        required: true
        in: path
        schema:
          $ref: '#/components/schemas/DomainName'
      - name: $preview
        in: query
        schema:
          $ref: '#/components/schemas/OperationPreviewParameter'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainUpdateRequestBody'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainOperationResponse'
        400:
          description: Validation error or bad request due to domain custody, unsupported blockchain, etc.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ValidationError:
                  $ref: '#/components/examples/ValidationError'
                NoChange:
                  $ref: '#/components/examples/NoChange'
                ConcurrentOperation:
                  $ref: '#/components/examples/ConcurrentOperation'
                CustodyRequired:
                  $ref: '#/components/examples/CustodyRequired'
                UnsupportedBlockchain:
                  $ref: '#/components/examples/UnsupportedBlockchain'
                BadRequest:
                  $ref: '#/components/examples/BadRequest'
        502:
          $ref: '#/components/responses/502BadGateway'
      tags:
      - domains
      security:
      - bearer: []
    delete:
      operationId: returnDomain
      summary: Return and refund a domain
      description: 'Return the domain to Unstoppable Domains so it is once again considered available for registering. The amount previously added to your running balance will be removed after successfully returning a domain.


        Returns are only allowed within 14 days of the original registration date, per our return policy.

        '
      parameters:
      - name: name
        required: true
        in: path
        schema:
          type: string
      - name: $preview
        in: query
        schema:
          $ref: '#/components/schemas/OperationPreviewParameter'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainOperationResponse'
        400:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ValidationError:
                  $ref: '#/components/examples/ValidationError'
      tags:
      - domains
      security:
      - bearer: []
    servers:
    - url: https://api.unstoppabledomains.com/partner/v3
      description: Production
    - url: https://api.ud-sandbox.com/partner/v3
      description: Sandbox
  /domains/{domainName}:
    get:
      operationId: DomainsController.getDomain
      parameters:
      - in: path
        name: domainName
        required: true
        schema:
          pattern: '[^\/#\?]+?'
          type: string
        description: A domain name registered by Unstoppable Domains
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainResponse'
          description: ''
      summary: Get domain
      tags:
      - domains
      description: '**Get Records for a Domain**<br/>**Note:** The API should be used in a backend system. If you need the data in client apps, please build a proxy backend to hide the API key.'
      security:
      - apiKeyAuth: []
    servers:
    - url: https://api.unstoppabledomains.com/resolve
      description: Production
    - url: https://api.ud-sandbox.com/resolve
      description: Sandbox
  /domains:
    get:
      operationId: DomainsController.getDomainsList
      parameters:
      - in: query
        name: resolution
        required: false
        schema:
          type: object
          properties:
            data:
              type: array
              items:
                type: string
        description: See this [list](https://github.com/unstoppabledomains/uns/blob/main/uns-config.json) for all the resolution keys supported
        style: deepObject
      - in: query
        name: owners
        schema:
          items:
            minLength: 1
            type: string
          type: object
          properties:
            data:
              type: array
              items:
                type: string
        description: Wallet addresses of the owners of domains
      - in: query
        name: tlds
        schema:
          items:
            type: string
          type: object
          properties:
            data:
              type: array
              items:
                enum:
                - x
                - polygon
                - nft
                - crypto
                - blockchain
                - bitcoin
                - dao
                - '888'
                - wallet
                - binanceus
                - hi
                - klever
                - kresus
                - anime
                - manga
                - go
                - zil
                - eth
        description: Domain ending supported such as `crypto`, `x`, or `polygon`. See [supported tlds](https://api.unstoppabledomains.com/resolve/supported_tlds) for the full list
      - in: query
        name: sortBy
        schema:
          type: string
          enum:
          - id
          - name
          - created_at
        description: Sort key to specify how the returned domain list is sorted
      - in: query
        name: sortDirection
        schema:
          type: string
          enum:
          - ASC
          - DESC
        description: Sort order of the returned domain list
      - in: query
        name: startingAfter
        schema:
          maximum: 200
          type: string
          minimum: 1
        description: 'Query offset to skip a number of record, example: 100'
      - in: query
        name: perPage
        schema:
          type: number
        description: 'Number of domains returned in the list, example: 50'
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DomainResponse'
                  meta:
                    type: object
                    items:
                      $ref: '#/components/schemas/DomainsListMeta'
          description: Successful response
      summary: Get domains list
      tags:
      - domains
      description: "\n  **Get Records for Multiple Domains**\n  <br/>\n  \nThe API only supports Unstoppable Domains' naming services for backward compatibility. A new API version is coming soon for other naming services\n<ul>\n  <li>\n    <p>Unstoppable Domain's <a href=\"https://docs.unstoppabledomains.com/smart-contracts/overview/uns-architecture-overview\" target=\"_blank\">UNS</a> and <a href=\"https://docs.unstoppabledomains.com/smart-contracts/overview/cns-architecture-overview\" target=\"_blank\">CNS</a> with TLDs:\n<strong>.x</strong>, <strong>.polygon</strong>, <strong>.nft</strong>, <strong>.crypto</strong>, <strong>.blockchain</strong>, <strong>.bitcoin</strong>, <strong>.dao</strong>, <strong>.888</strong>, <strong>.wallet</strong>, <strong>.binanceus</strong>, <strong>.hi</strong>, <strong>.klever</strong>, <strong>.kresus</strong>, <strong>.anime</strong>, <strong>.manga</strong>, <strong>.go</strong>, <strong>.zil</strong></p>\n  </li>\n  <li>\n    <p>Unstoppable Domain's <a href=\"https://unstoppabledomains.com/blog/categories/announcements/article/zilliqa-naming-service\" target=\"_blank\">Zilliqa</a> with TLDs:\n<strong>zil</strong></p>\n  </li>\n</ul>\n\n  <br/>\n  **Note:** The API should be used in a backend system. If you need the data in client apps, please build a proxy backend to hide the API key."
      security:
      - apiKeyAuth: []
    servers:
    - url: https://api.unstoppabledomains.com/resolve
      description: Production
    - url: https://api.ud-sandbox.com/resolve
      description: Sandbox
  /domains/{domainName}/transfers/latest:
    get:
      operationId: DomainsController.getDomainsLastTransfer
      parameters:
      - in: path
        name: domainName
        required: true
        schema:
          pattern: '[^\/#\?]+?'
          type: string
        description: A domain name registered by Unstoppable Domains
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DomainLatestTransfer'
          description: Successful response
      summary: Get domains last transfer
      tags:
      - domains
      description: '**Get Domain Transfer Events**<br/>**Note:** The API should be used in a backend system. If you need the data in client apps, please build a proxy backend to hide the API key.'
      security:
      - apiKeyAuth: []
    servers:
    - url: https://api.unstoppabledomains.com/resolve
      description: Production
    - url: https://api.ud-sandbox.com/resolve
      description: Sandbox
  /records:
    get:
      operationId: DomainsController.getDomainsRecords
      parameters:
      - in: query
        name: domains
        required: true
        schema:
          items:
            minLength: 1
            type: string
          maxItems: 50
          type: object
          properties:
            data:
              type: array
              items:
                type: string
        description: Domain names registered by Unstoppable Domains. At least 1 domain must be passed in
      - in: query
        name: key
        required: false
        schema:
          type: string
        description: Filtered resolution key. See above to see the supported keys on different naming services
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DomainRecords_2'
          description: Successful response
      summary: Get domains records
      tags:
      - domains
      description: "\n  **Get Records for Multiple Domains**\n  <br/>\n  It's recommended to use this API on different naming services as they support different record keys\n  <ul>\n    <li>\n      <p>Unstoppable Domain's <a href=\"https://docs.unstoppabledomains.com/smart-contracts/overview/uns-architecture-overview\" target=\"_blank\">UNS</a> and <a href=\"https://docs.unstoppabledomains.com/smart-contracts/overview/cns-architecture-overview\" target=\"_blank\">CNS</a> with TLDs:\n<strong>.x</strong>, <strong>.polygon</strong>, <strong>.nft</strong>, <strong>.crypto</strong>, <strong>.blockchain</strong>, <strong>.bitcoin</strong>, <strong>.dao</strong>, <strong>.888</strong>, <strong>.wallet</strong>, <strong>.binanceus</strong>, <strong>.hi</strong>, <strong>.klever</strong>, <strong>.kresus</strong>, <strong>.anime</strong>, <strong>.manga</strong>, <strong>.go</strong>, <strong>.zil</strong><br/>See this <a href=\"https://github.com/unstoppabledomains/uns/blob/main/uns-config.json\" target=\"_blank\">list</a> for all the resolution keys supported</p>\n    </li>\n    <li>\n      <p>\n      Ethereum Naming Service - <a href=\"https://docs.ens.domains/\" target=\"_blank\">ENS</a> with TLDs:\n<strong>.eth</strong>\n      <br/>See Ens' <a href=\"https://docs.ens.domains/ens-improvement-proposals\" target=\"_blank\">document</a> for all the resolution keys supported\n      </p>\n    </li>\n  </ul>\n  <br/>**Note:** The API should be used in a backend system. If you need the data in client apps, please build a proxy backend to hide the API key."
      security:
      - apiKeyAuth: []
    servers:
    - url: https://api.unstoppabledomains.com/resolve
      description: Production
    - url: https://api.ud-sandbox.com/resolve
      description: Sandbox
components:
  schemas:
    WalletCreateResultResponse:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/OwnerAddress'
      required:
      - address
    DomainOperationResponse:
      type: object
      properties:
        '@type':
          type: string
          enum:
          - unstoppabledomains.com/partner.v3.DomainOperationResult
        operation:
          $ref: '#/components/schemas/OperationCheckResponse'
      required:
      - '@type'
      - operation
    OperationCheckResponse:
      type: object
      properties:
        id:
          type: string
          example: op-4abb409c-9283-4589-bd36-d27a757a2165
        '@type':
          type: string
          enum:
          - unstoppabledomains.com/partner.v3.Operation
        status:
          $ref: '#/components/schemas/OperationStatus'
        type:
          $ref: '#/components/schemas/OperationType'
        domain:
          $ref: '#/components/schemas/DomainName'
        lastUpdatedTimestamp:
          type: number
          example: 1684356429790
        dependencies:
          type: array
          items:
            anyOf:
            - $ref: '#/components/schemas/MintSubOperationResponse'
            - $ref: '#/components/schemas/UpdateRecordsSubOperationResponse'
            - $ref: '#/components/schemas/TransferSubOperationResponse'
            - $ref: '#/components/schemas/ReturnSubOperationResponse'
            - $ref: '#/components/schemas/WalletCreateSubOperationResponse'
            - $ref: '#/components/schemas/WalletSetDefaultSubOperationResponse'
            - $ref: '#/components/schemas/WebhookCreateSubOperationResponse'
            - $ref: '#/components/schemas/WebhookDeleteSubOperationResponse'
      required:
      - id
      - status
      - type
      - dependencies
      - '@type'
      - lastUpdatedTimestamp
    ReturnSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/BlockchainSubOperationResponse'
      - type: object
        properties:
          type:
            type: string
            enum:
            - RETURN
        required:
        - type
    OwnerAddress:
      oneOf:
      - $ref: '#/components/schemas/EvmOwnerAddress'
    OwnerType:
      type: string
      enum:
      - NONE
      - UD
      - SELF
      - EXTERNAL
      description: '- `NONE`: Domain is not currently owned by anyone

        - `UD`: Domain is owned by a wallet/contract that belongs to Unstoppable Domains

        - `SELF`: Domain is owned by your account. You can manage this domains through the API

        - `EXTERNAL`: Owner doesn''t qualify as any of the above.

        '
    WebhookDeleteSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/PlatformSubOperationResponse'
      - type: object
        properties:
          parameters:
            $ref: '#/components/schemas/WebhookDeleteParametersResponse'
          type:
            type: string
            enum:
            - WEBHOOK_DELETE
        required:
        - parameters
        - type
    WalletCreateSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/PlatformSubOperationResponse'
      - type: object
        properties:
          result:
            $ref: '#/components/schemas/WalletCreateResultResponse'
          type:
            type: string
            enum:
            - WALLET_CREATE
        required:
        - type
    WebhookCreateParametersResponse:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/WebhookType'
        url:
          type: string
          format: uri
      required:
      - type
      - url
    OperationStatus:
      type: string
      enum:
      - QUEUED
      - SIGNATURE_REQUIRED
      - PROCESSING
      - COMPLETED
      - FAILED
      - CANCELLED
    WalletSetDefaultParametersResponse:
      type: object
      properties:
        address:
          $ref: '#/components/schemas/OwnerAddress'
      required:
      - address
    UpdateRecordsParametersResponse:
      type: object
      properties:
        recordUpdates:
          $ref: '#/components/schemas/DomainRecords'
        resetRecords:
          type: boolean
      required:
      - recordUpdates
      - resetRecords
    ErrorResponseContextEntityMulti:
      type: object
      properties:
        type:
          type: string
          enum:
          - MULTI_VALUE
        values:
          type: array
          items:
            $ref: '#/components/schemas/ErrorResponseContextEntitySingle'
      required:
      - type
      - values
    TransferSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/BlockchainSubOperationResponse'
      - type: object
        properties:
          type:
            type: string
            enum:
            - TRANSFER
          parameters:
            $ref: '#/components/schemas/TransferParametersResponse'
        required:
        - type
        - parameters
    TransferParametersResponse:
      type: object
      properties:
        fromAddress:
          $ref: '#/components/schemas/OwnerAddress'
        toAddress:
          $ref: '#/components/schemas/OwnerAddress'
        resetRecords:
          type: boolean
      required:
      - fromAddress
      - toAddress
      - resetRecords
    ErrorResponseContext:
      type: object
      properties:
        entities:
          type: array
          items:
            $ref: '#/components/schemas/ErrorResponseContextEntity'
      required:
      - entities
    WebhookDeleteParametersResponse:
      type: object
      properties:
        id:
          type: string
      required:
      - id
    ErrorResponse:
      oneOf:
      - $ref: '#/components/schemas/ErrorResponseSingle'
      - $ref: '#/components/schemas/ErrorResponseMulti'
    ErrorResponseContextEntitySingle:
      type: object
      properties:
        type:
          type: string
        value:
          type: string
      required:
      - type
      - value
    WebhookCreateResultResponse:
      type: object
      properties:
        id:
          type: string
      required:
      - id
    WebhookType:
      type: string
      enum:
      - OPERATION_FINISHED
      - OPERATION_ACTION_REQUIRED
    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'
    BlockchainType:
      type: string
      enum:
      - MATIC
      - ETH
      - BASE
    MintParametersResponse:
      type: object
      properties:
        initialRecords:
          $ref: '#/components/schemas/DomainRecords'
        toAddress:
          $ref: '#/components/schemas/OwnerAddress'
      required:
      - toAddress
    DomainUpdateRequestBodyOwner:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/OwnerType'
        address:
          $ref: '#/components/schemas/OwnerAddress'
      required:
      - type
      - address
    UpdateRecordsSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/BlockchainSubOperationResponse'
      - type: object
        properties:
          type:
            type: string
            enum:
            - UPDATE_RECORDS
          parameters:
            $ref: '#/components/schemas/UpdateRecordsParametersResponse'
        required:
        - type
        - parameters
    DomainUpdateRequestBody:
      type: object
      properties:
        owner:
          $ref: '#/components/schemas/DomainUpdateRequestBodyOwner'
        records:
          $ref: '#/components/schemas/UpdateDomainRecords'
    SubOperationResponse:
      type: object
      properties:
        id:
          type: string
          example: bc-2db427bd-5613-40c7-85b1-ab38beed0ed0
        status:
          $ref: '#/components/schemas/OperationStatus'
      required:
      - status
      - id
    SubOperationTransactionResponse:
      type: object
      properties:
        hash:
          type: string
        blockchain:
          $ref: '#/components/schemas/BlockchainType'
      required:
      - blockchain
    EvmOwnerAddress:
      type: string
      example: '0xb4783AeF93923a2d4eEA29C84f347F26E62e4321'
      pattern: ^0x[a-fA-F0-9]{40}$
    OperationType:
      type: string
      enum:
      - DOMAIN_CLAIM
      - DOMAIN_UPDATE
      - DOMAIN_RETURN
      - WALLET_CREATE
      - WALLET_UPDATE
      - WALLET_VERIFY
      - ACCOUNT_UPDATE
    DomainRecords:
      type: object
      additionalProperties:
        type: string
      example:
        crypto.ETH.address: '0xb4783AeF93923a2d4eEA29C84f347F26E62e4321'
        crypto.MATIC.version.MATIC.address: '0xb4783AeF93923a2d4eEA29C84f347F26E62e5678'
        crypto.MATIC.version.ERC20.address: '0xb4783AeF93923a2d4eEA29C84f347F26E62e0921'
    MintSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/BlockchainSubOperationResponse'
      - type: object
        properties:
          type:
            type: string
            enum:
            - MINT
          parameters:
            $ref: '#/components/schemas/MintParametersResponse'
        required:
        - type
        - parameters
    DomainName:
      type: string
      example: matt.crypto
    WebhookCreateSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/PlatformSubOperationResponse'
      - type: object
        properties:
          parameters:
            $ref: '#/components/schemas/WebhookCreateParametersResponse'
          result:
            $ref: '#/components/schemas/WebhookCreateResultResponse'
          type:
            type: string
            enum:
            - WEBHOOK_CREATE
        required:
        - parameters
        - type
    ErrorResponseSingle:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        context:
          $ref: '#/components/schemas/ErrorResponseContext'
    ErrorResponseMulti:
      type: object
      properties:
        code:
          type: string
          enum:
          - MULTIPLE_ERRORS
        message:
          type: string
        context:
          $ref: '#/components/schemas/ErrorResponseContext'
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorResponseSingle'
      required:
      - code
      - errors
    ErrorResponseContextEntity:
      oneOf:
      - $ref: '#/components/schemas/ErrorResponseContextEntitySingle'
      - $ref: '#/components/schemas/ErrorResponseContextEntityMulti'
    PlatformSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/SubOperationResponse'
      - type: object
        properties:
          '@type':
            type: string
            enum:
            - unstoppabledomains.com/partner.v3.PlatformOperation
        required:
        - '@type'
    WalletSetDefaultSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/PlatformSubOperationResponse'
      - type: object
        properties:
          parameters:
            $ref: '#/components/schemas/WalletSetDefaultParametersResponse'
          type:
            type: string
            enum:
            - WALLET_SET_DEFAULT
        required:
        - parameters
        - type
    UpdateDomainRecords:
      allOf:
      - $ref: '#/components/schemas/DomainRecords'
      - type: object
        maxProperties: 500
    OperationPreviewParameter:
      type: boolean
      default: false
      description: 'Allows simulating the operation creation (when set to `true`), without actually starting any processing. This can be used to validate the operation will be permitted and get a preview of the initial outcome.


        When used, the operation in the response will have `PREVIEW` for all `id` and `status` values.

        '
    DomainLatestTransfer:
      properties:
        domain:
          type: string
        from:
          minLength: 1
          type: string
        to:
          minLength: 1
          type: string
        networkId:
          minLength: 1
          type: integer
        blockNumber:
          minLength: 1
          type: integer
        blockchain:
          minLength: 1
          type: string
      type: object
      required:
      - domain
      - from
      - to
      - networkId
      - blockNumber
      - blockchain
    DomainResponse:
      properties:
        meta:
          $ref: '#/components/schemas/DomainMetadata'
        records:
          type: object
      type: object
      required:
      - meta
      - records
    DomainRecords_2:
      properties:
        domain:
          type: string
        records:
          type: object
      type: object
      required:
      - domain
      - records
    DomainsListMeta:
      properties:
        nextStartingAfter:
          type: string
          minLength: 1
        sortBy:
          type: string
          minLength: 1
        sortDirection:
          type: string
          minLength: 1
        perPage:
          maximum: 200
          type: string
          minimum: 1
          minLength: 1
        hasMore:
          type: string
          minLength: 1
      type: object
      required:
      - nextStartingAfter
      - sortBy
      - sortDirection
      - perPage
      - hasMore
    DomainMetadata:
      properties:
        resolver:
          type: string
        blockchain:
          items:
            type: string
            enum:
            - ETH
            - ZIL
            - MATIC
          type: string
        networkId:
          type: number
          enum:
          - 1
          - 5
          - 137
          - 1337
          - 80001
        registry:
          type: string
        type:
          enum:
          - Uns
          - Zilliqa
          - Ens
          type: string
        customMeta:
          type: object
        domain:
          type: string
        namehash:
          type: string
        tokenId:
          type: string
        owner:
          type: string
        reverse:
          type: boolean
      type: object
      required:
      - type
      - domain
      - reverse
  examples:
    UnsupportedBlockchain:
      description: The domai

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