Unstoppable Domains domain_registration API

Domain details/availability lookups and registration.

Operations 5

GET /domains Lookup multiple domain details and availability #
POST /domains Register a domain #
GET /domains/{name} Get domain details and availability #
GET /domains/{name}/renewals Get domain renewal info #
POST /domains/{name}/renewals Renew a domain #

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-domain-registration-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-domain-registration-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Unstoppable Domains Domain Registration API
  version: '1.0'
  description: 'Operations tagged domain_registration across 2 of this provider''s published API definitions: unstoppable-domains-partner-api-openapi.yaml, unstoppable-domains-reseller-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
security:
- bearer: []
tags:
- name: domain_registration
  x-displayName: Domain Lookup & Registration
  description: 'Domain details/availability lookups and registration.

    '
paths:
  /domains:
    get:
      operationId: getMultipleDomains
      summary: Lookup multiple domain details and availability
      description: 'Get domain availability and owner details for multiple domains using the query string search options. Optionally, use the `$expand` query string to include additional data in the response (ie. `?$expand=records&$expand=registration`).


        If the domain is available to be registered it will have a `availability.status` of `AVAILABLE` and will include an `availability.price` object.

        '
      parameters:
      - name: $expand
        required: false
        in: query
        schema:
          type: array
          description: Use `$expand` options to conditionally include portions of the response
          items:
            type: string
            enum:
            - records
            - registration
      - name: tlds
        required: false
        deprecated: true
        description: Use `ending` instead
        in: query
        schema:
          type: array
          items:
            type: string
            example: crypto
      - name: ending
        required: false
        in: query
        description: TLD or Parent Domain to apply to your `query` base names
        schema:
          type: array
          items:
            anyOf:
            - type: string
              example: example-name
            - $ref: '#/components/schemas/DomainName'
      - name: query
        required: true
        in: query
        schema:
          type: array
          items:
            anyOf:
            - type: string
              example: example-name
            - $ref: '#/components/schemas/DomainName'
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MultipleDomainSearchResponse'
        400:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ValidationError:
                  $ref: '#/components/examples/ValidationError'
      tags:
      - domain_registration
    post:
      operationId: mintSingleDomain
      summary: Register a domain
      description: 'If a domain is available, use this route to register it to your account. The domain will be minted or transfered to your custodial wallet where only Unstoppable Domains, on your behalf, will be able to make changes to it.


        The price of the domain will be automatically added to your running balance with Unstoppable Domains. The pending balance of your account will be invoiced periodically.


        ### Register to specific owner

        If you do not provide an `owner` in your request, your account''s default wallet address will be used as the owner. Use `GET /account` to confirm your default wallet address.


        When providing an `owner` object in your request, be sure the `type` aligns with the `address`. To register to one of your own wallets, the `type` must be `SELF`. Use `GET /account/wallets` to see your list of available wallets.

        '
      parameters:
      - name: $preview
        in: query
        schema:
          $ref: '#/components/schemas/OperationPreviewParameter'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainMintRequestBody'
      responses:
        201:
          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'
                NotAvailable:
                  $ref: '#/components/examples/DomainNotAvailable'
                ExceedsLimit:
                  $ref: '#/components/examples/DomainExceedsLimit'
                InsufficientBalance:
                  $ref: '#/components/examples/InsufficientBalance'
      tags:
      - domain_registration
    servers:
    - url: https://api.unstoppabledomains.com/partner/v3
      description: Production
    - url: https://api.ud-sandbox.com/partner/v3
      description: Sandbox
  /domains/{name}:
    get:
      operationId: getSingleDomain
      summary: Get domain details and availability
      description: 'Get information about the domain''s current owner and availability status. Optionally, use the `$expand` query string to include additional data in the response (ie. `?$expand=records&$expand=registration`).


        If the domain is available to be registered it will have a `availability.status` of `AVAILABLE` and will include an `availability.price` object.

        '
      parameters:
      - name: name
        required: true
        in: path
        schema:
          $ref: '#/components/schemas/DomainName'
      - name: $expand
        required: false
        description: Use `$expand` options to conditionally include portions of the response
        in: query
        schema:
          type: array
          items:
            type: string
            enum:
            - records
            - registration
      responses:
        200:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainSearchResponse'
        400:
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                ValidationError:
                  $ref: '#/components/examples/ValidationError'
      tags:
      - domain_registration
    servers:
    - url: https://api.unstoppabledomains.com/partner/v3
      description: Production
    - url: https://api.ud-sandbox.com/partner/v3
      description: Sandbox
  /domains/{name}/renewals:
    get:
      operationId: getDomainRenewalInfo
      parameters:
      - name: name
        required: true
        in: path
        schema:
          type: string
      responses:
        '200':
          description: Domain renewal pricing and eligibility
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IcannDomainRenewalInfoResponse'
        '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:
      - domain_registration
      summary: Get domain renewal info
      description: 'Retrieve renewal eligibility and pricing for the specified domain, including the current expiration date, grace period expiration, and available renewal periods.

        '
    post:
      operationId: postDomainRenewal
      parameters:
      - name: name
        required: true
        in: path
        schema:
          type: string
      - name: $preview
        required: true
        in: query
        schema:
          default: false
          type: boolean
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DomainRenewalRequestBody'
      responses:
        '201':
          description: Domain renewal operation created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DomainOperationResponse'
        '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'
        '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:
      - domain_registration
      summary: Renew a domain
      description: 'Renew the specified domain for a given period (in years). Use `$preview=true` to get a renewal price quote without executing the renewal.

        '
    servers:
    - url: https://api.unstoppabledomains.com/partner/v3
      description: Production
    - url: https://api.ud-sandbox.com/partner/v3
      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
    MultipleDomainSearchResponse:
      type: object
      properties:
        '@type':
          type: string
          enum:
          - unstoppabledomains.com/partner.v3.List
        items:
          type: array
          items:
            $ref: '#/components/schemas/DomainSearchResponse'
      required:
      - items
      - '@type'
    DomainPriceResponse:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/DomainPriceType'
        listPrice:
          $ref: '#/components/schemas/DomainPriceItemResponse'
        subTotal:
          $ref: '#/components/schemas/DomainPriceItemResponse'
      required:
      - type
      - listPrice
      - subTotal
    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
    DomainPriceItemResponse:
      type: object
      properties:
        usdCents:
          type: number
          example: 1000
      required:
      - usdCents
    DomainAvailabilityStatus:
      type: string
      enum:
      - AVAILABLE
      - AVAILABLE_FROM_ISSUER
      - REGISTERED
      - PROTECTED
      - COMING_SOON
      - DISALLOWED
      - RESERVED
      - EXCEEDS_PRICE_LIMIT
      description: "- `AVAILABLE`: Domain is available for registering\n- `AVAILABLE_FROM_ISSUER`: Domain is available for registering from an external issuer. \n  - This status is deprecated as it is only relevant to subdomains that have a verified, self-custodied parent domain\n- `EXCEEDS_PRICE_LIMIT`: Domain is available for registering, but exceeds the price limit on your account.\n  - In this situation you can contact your AM to facilitate a private sale or use our [Affiliate Program](https://unstoppabledomains.com/affiliate-registration) to refer users to our website for checkout  \n- `REGISTERED`: Domain belongs to an owner and is not available for registering\n- `PROTECTED`: Domain is being protected by Unstoppable Domains and is not available for general registering\n- `RESERVED`: Domain is being reserved by Unstoppable Domains and is not available for general registering\n- `COMING_SOON`: Domain is temporarily unavailable but will be available in the future\n- `DISALLOWED`: Domain is currently not allowed to be registered\n"
    ErrorResponseContext:
      type: object
      properties:
        entities:
          type: array
          items:
            $ref: '#/components/schemas/ErrorResponseContextEntity'
      required:
      - entities
    WebhookDeleteParametersResponse:
      type: object
      properties:
        id:
          type: string
      required:
      - id
    DomainMintRequestBody:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/DomainName'
        records:
          $ref: '#/components/schemas/UpdateDomainRecords'
        owner:
          $ref: '#/components/schemas/DomainMintRequestBodyOwner'
      required:
      - name
    DomainMintRequestBodyOwner:
      type: object
      properties:
        type:
          type: string
          enum:
          - NONE
          - UD
          - SELF
          - EXTERNAL
        address:
          type: string
      required:
      - type
      - address
    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
    BlockchainType:
      type: string
      enum:
      - MATIC
      - ETH
      - BASE
    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'
    MintParametersResponse:
      type: object
      properties:
        initialRecords:
          $ref: '#/components/schemas/DomainRecords'
        toAddress:
          $ref: '#/components/schemas/OwnerAddress'
      required:
      - toAddress
    UpdateRecordsSubOperationResponse:
      allOf:
      - $ref: '#/components/schemas/BlockchainSubOperationResponse'
      - type: object
        properties:
          type:
            type: string
            enum:
            - UPDATE_RECORDS
          parameters:
            $ref: '#/components/schemas/UpdateRecordsParametersResponse'
        required:
        - type
        - parameters
    DomainPriceType:
      type: string
      enum:
      - STANDARD
      - PREMIUM
      - DEFERRED
      description: "- `STANDARD`: Domain is priced using the default, standard pricing algorithm\n- `PREMIUM`: Domain is considered premium by the registry and pricing may differ from the standard pricing\n- `DEFERRED`: Domain pricing is not available and an additional request is needed to determine pricing. \n  - This can be a limitation of the bulk domain searches due to constraints with checking prices for some registries\n  - When requesting a single domain the price will always be included (if available) and this status will not be returned\n"
    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
    DomainRegistrationResponse:
      type: object
      properties:
        tokenId:
          type: string
        tokenType:
          type: string
          enum:
          - ERC721
          - ERC1155
      required:
      - tokenId
    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
    DomainAvailabilityResponse:
      type: object
      properties:
        status:
          $ref: '#/components/schemas/DomainAvailabilityStatus'
        price:
          $ref: '#/components/schemas/DomainPriceResponse'
        issuer:
          $ref: '#/components/schemas/DomainOwnerResponse'
      required:
      - status
    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.

        '
    DomainOwnerResponse:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/OwnerType'
        address:
          $ref: '#/components/schemas/OwnerAddress'
      required:
      - type
    DomainSearchResponse:
      type: object
      properties:
        '@type':
          type: string
          enum:
          - unstoppabledomains.com/partner.v3.Domain
        records:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/DomainRecords'
        name:
          $ref: '#/components/schemas/DomainName'
        owner:
          $ref: '#/components/schemas/DomainOwnerResponse'
        availability:
          $ref: '#/components/schemas/DomainAvailabilityResponse'
        registration:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/DomainRegistrationResponse'
        blockchain:
          $ref: '#/components/schemas/BlockchainType'
      required:
      - name
      - owner
      - availability
      - '@type'
    PlatformOperationDomainDnsSecuritySetDnssec:
      type: object
      description: Configures DNSSEC DS records at the registry for a domain
      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_DNS_SECURITY_SET_DNSSEC
        parameters:
          type: object
          properties:
            domain:
              type: string
              description: Domain name
        error:
          $ref: '#/components/schemas/OperationDependencyError'
      required:
      - id
      - '@type'
      - status
      - type
      - parameters
    OperationCheckResponse_2:
      type: object
      properties:
        '@type':
          type: string
          enum:
          - unstoppabledomains.com/partner.v3.Operation
        id:
          type: string
          description: Operation ID
          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
        status:
          enum:
          - PREVIEW
          - QUEUED
          - PROCESSING
          - FAILED
          - COMPLETED
          - CANCELLED
          - AWAITING_UPDATES
          type: string
        type:
          type: string
          enum:
          - ADMIN_GENERIC
          - DOMAIN_ADMIN_UPDATE
          - DOMAIN_RENEW
          - ACCOUNT_UPDATE
          - DOMAIN_DNS_RECORD_CREATE
          - DOMAIN_DNS_RECORD_UPDATE
          - DOMAIN_DNS_RECORD_DELETE
          - DOMAIN_DNS_RECORD_BATCH
          - DOMAIN_DNS_SECURITY_ENABLE
          - DOMAIN_DNS_SECURITY_DELETE
          - DOMAIN_DNS_NAME_SERVER_UPDATE
          - DOMAIN_HOSTING_UPDATE
          - DOMAIN_HOSTING_DISABLE
          - DOMAIN_TRANSFER_OUT
          - DOMAIN_TRANSFER_OUT_TOGGLE
          - DOMAIN_FLAGS_UPDATE
          - DOMAIN_CONTACTS_UPDATE
          - CONTACT_CREATE
          - DOMAIN_SUGGESTION_CREATE
          - DOMAIN_SUGGESTION_REFRESH
          - DOMAIN_ADMIN_DNS_ZONE_MIGRATE
        domain:
          type: string
        createdAtTimestamp:
          type: number
        lastUpdatedTimestamp:
          type: number
        validUntilTimestamp:
          type: number
        dependencies:
          type: array
          description: List of platform operation dependencies that make up this operation
          items:
            $ref: '#/components/schemas/PlatformOperationDependency'
      required:
      - '@type'
      - id
      - status
      - type
      - createdAtTimestamp
      - lastUpdatedTimestamp
      - dependencies
    PlatformOperationStatus:
      type: string
      enum:
      - PREVIEW
      - QUEUED
      - PROCESSING
      - FAILED
      - COMPLETED
      - CANCELLED
      - AWAITING_UPDATES
      description: Status of a platform operation dependency
    DomainFlagUpdateRequestBody:
      type: object
      properties:
        DNS_RESOLUTION:
          $ref: '#/components/schemas/DomainFlagUpdateRequestBodyFlag'
        DNS_TRANSFER_OUT:
          $ref: '#/components/schemas/DomainFlagUpdateRequestBodyFlag'
        DNS_DELETE:
          $ref: '#/components/schemas/DomainFlagUpdateRequestBodyFlag'
        DNS_UPDATE:
          $ref: '#/components/schemas/DomainFlagUpdateRequestBodyFlag'
        DNS_RENEW:
          $ref: '#/components/schemas/DomainFlagUpdateRequestBodyFlag'
        DNS_WHOIS_PROXY:
          $ref: '#/components/schemas/DomainFlagUpdateRequestBodyFlag'
      description: Update domain flag settings. Only include the flags you want to change — omitted flags remain unchanged.
    PlatformOperationDnsRecordUpdate:
      type: object
      description: Updates an existing DNS record
      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:
          - DNS_RECORD_UPDATE
        parameters:
          type: object
          properties:
            id:
              type: string
              description: DNS record ID to update
            values:
              type: array
              items:
                type: string
            ttl:
              type: integer
              description: Time-to-live in seconds
          required:
          - id
        error:
          $ref: '#/components/schemas/OperationDependencyError'
      required:
      - id
      - '@type'
      - status
      - type
      - parameters
    DomainRegistrationRequestBodyDns:
      type: object
      properties:
        authorizationCode:
          type: string
          minLength: 3
          maxLength: 250
          description: EPP authorization code for domain transfer. Only applicable for transfer-in operations.
        period:
          type: number
          minimum: 1
          maximum: 10
          description: Registration period in years (1-10). If omitted, defaults to the minimum period for the TLD.
        contacts:
          $ref: '#/components/schemas/DomainDnsContactsRequestBo

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