{
  "openapi": "3.1.1",
  "info": {
    "title": "GoDaddy Domains API v2",
    "version": "1.0.0",
    "description": "API for managing domains, contacts, hosts, and related operations"
  },
  "tags": [
    {
      "name": "Transfer Domains",
      "description": "Initiate and manage inbound and outbound domain transfers and transfer lifecycle actions."
    },
    {
      "name": "Manage Domain Settings",
      "description": "Retrieve domain details and manage contacts, nameservers, forwarding rules, privacy forwarding, renewals, and redemption."
    },
    {
      "name": "Register Domains",
      "description": "Register new domains, retrieve registration schemas by TLD, and validate registration requests."
    },
    {
      "name": "Domains API Usage",
      "description": "Retrieve monthly API request usage counts for your account. Data is retained for three months."
    },
    {
      "name": "Domain Actions",
      "description": "Poll the status and cancel asynchronous operations queued by domain write requests."
    },
    {
      "name": "Domain Notifications",
      "description": "Manage notification opt-in preferences, retrieve notification schemas, and acknowledge domain lifecycle notifications."
    }
  ],
  "paths": {
    "/v2/customers/{customerId}/domains/{domain}/changeOfRegistrant": {
      "delete": {
        "tags": [
          "Manage Domain Settings"
        ],
        "summary": "Cancel a pending change of registrant request",
        "description": "Cancels a pending change of registrant. Returns 202 - poll GET .../actions/CHANGE_OF_REGISTRANT_DELETE until COMPLETED, FAILED, or CANCELLED.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain whose change of registrant is to be cancelled",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/CHANGE_OF_REGISTRANT_DELETE to poll status"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The contact does not exist",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "There is already a similar action processing",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "`domain` must be specified",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "Dependent service unavailable",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Manage Domain Settings"
        ],
        "summary": "Retrieve change of registrant information",
        "description": "Returns current change of registrant details including status, requested contacts, and any pending approvals.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain whose change of registrant information is to be retrieved",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DomainChangeOfRegistrant"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The contact does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "There is already a similar action processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "`domain` must be specified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "Dependent service unavailable",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/nameServers": {
      "put": {
        "tags": [
          "Manage Domain Settings"
        ],
        "summary": "Replaces the existing name servers on the domain.",
        "description": "Replaces the domain's authoritative nameservers. Returns 202 - poll GET .../actions/DOMAIN_UPDATE_NAME_SERVERS until the action reaches a terminal state.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain whose name servers are to be replaced",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DomainNameServerUpdateV2"
              }
            }
          },
          "description": "Name server records to replace on the domain",
          "required": true
        },
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/DOMAIN_UPDATE_NAME_SERVERS to poll status"
          },
          "400": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Request was malformed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "There is already a similar action processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request body doesn't fulfill schema, see details in `fields`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/transfer": {
      "post": {
        "tags": [
          "Transfer Domains"
        ],
        "summary": "Initiate inbound transfer",
        "description": "Initiates an inbound domain transfer from another registrar. Requires an authcode and consent object. Returns 202 - poll GET .../actions/TRANSFER until COMPLETED, FAILED, or CANCELLED.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain to transfer in",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/DomainTransferInV2"
        },
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER to poll status"
          },
          "400": {
            "description": "Request was malformed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "There is already a similar action processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Based on restrictions declared in JSON schema returned by `./schema/{tld}`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/transferInAccept": {
      "post": {
        "tags": [
          "Transfer Domains"
        ],
        "summary": "Accept the inbound transfer",
        "description": "Explicitly accepts an in-progress inbound transfer to expedite the process. Returns 202 - poll GET .../actions/TRANSFER_IN_ACCEPT until the action reaches a terminal state.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "required": true,
            "in": "path",
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "domain",
            "required": true,
            "in": "path",
            "description": "Domain to accept the transfer in for",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/DomainTransferAuthCode"
        },
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_IN_ACCEPT to poll status"
          },
          "400": {
            "description": "Request was malformed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The domain status does not allow performing the operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request body doesn't fulfill schema, see details in `fields`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/transferInCancel": {
      "post": {
        "tags": [
          "Transfer Domains"
        ],
        "summary": "Cancel the inbound transfer",
        "description": "Cancels an in-progress inbound transfer. Returns 202 - poll GET .../actions/TRANSFER_IN_CANCEL until the action reaches a terminal state.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain to cancel the transfer in for",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_IN_CANCEL to poll status"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "There is already a similar action processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/transferInRestart": {
      "post": {
        "tags": [
          "Transfer Domains"
        ],
        "summary": "Restart the inbound transfer from the beginning",
        "description": "Restarts a stalled inbound transfer from the beginning. Returns 202 - poll GET .../actions/TRANSFER_IN_RESTART until the action reaches a terminal state.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "required": true,
            "in": "path",
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "domain",
            "required": true,
            "in": "path",
            "description": "Domain to restart the transfer in",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_IN_RESTART to poll status"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The domain status does not allow performing the operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/transferInRetry": {
      "post": {
        "tags": [
          "Transfer Domains"
        ],
        "summary": "Retry the inbound transfer with a new authorization code",
        "description": "Retries a failed inbound transfer with a new authorization code. Returns 202 - poll GET .../actions/TRANSFER_IN_RETRY until the action reaches a terminal state.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "customerId",
            "required": true,
            "in": "path",
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "domain",
            "required": true,
            "in": "path",
            "description": "Domain to retry the transfer in",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/DomainTransferAuthCode"
        },
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_IN_RETRY to poll status"
          },
          "400": {
            "description": "Request was malformed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The domain status does not allow performing the operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request body doesn't fulfill schema, see details in `fields`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}": {
      "get": {
        "tags": [
          "Manage Domain Settings"
        ],
        "summary": "Retrieve details for the specified Domain",
        "description": "Returns the full DomainDetailV2 object including status, contacts, nameservers, lock state, privacy flag, and expiration timestamp.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain name whose details are to be retrieved",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includes",
            "required": false,
            "in": "query",
            "description": "Optional details to be included in the response",
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "actions",
                  "contacts",
                  "dnssecRecords",
                  "registryStatusCodes"
                ],
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DomainDetailV2"
                }
              }
            }
          },
          "203": {
            "description": "Request was partially successful, but actions, contacts, and/or verifications may not be included.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DomainDetailV2"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The contact does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "`domain` must be specified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/privacy/forwarding": {
      "get": {
        "tags": [
          "Manage Domain Settings"
        ],
        "summary": "Retrieve privacy email forwarding settings showing where emails are delivered",
        "description": "Returns the current privacy email forwarding configuration including target address and forwarding mode.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain name whose details are to be retrieved",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DomainPrivacyForwarding"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "`domain` must be specified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Manage Domain Settings"
        ],
        "summary": "Update privacy email forwarding settings to determine how emails are delivered",
        "description": "Updates privacy email forwarding settings. Only fields included in the request are modified. Returns 202 - poll the actions endpoint for completion.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain name whose details are to be retrieved",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DomainPrivacyForwardingUpdate"
              }
            }
          },
          "description": "Update privacy email forwarding settings",
          "required": true
        },
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/PRIVACY_FORWARDING_UPDATE to poll status"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "There is already a similar action processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request body doesn't fulfill schema, see details in `fields`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/transferOut": {
      "post": {
        "tags": [
          "Transfer Domains"
        ],
        "summary": "Initiate an outbound transfer",
        "description": "Initiates an outbound transfer for .uk domains. Returns 202 - poll the actions endpoint for completion.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain to initiate the transfer out for",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Registrar tag to push transfer to",
            "name": "registrar",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_OUT_REQUESTED to poll status"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "There is already a similar action processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Domain invalid. TLD must be .uk",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/transferOutAccept": {
      "post": {
        "tags": [
          "Transfer Domains"
        ],
        "summary": "Accept the outbound transfer",
        "description": "Accepts a pending outbound transfer request. Returns 202 - poll GET .../actions/TRANSFER_OUT_ACCEPT until the action reaches a terminal state.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain to accept the transfer out for",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_OUT_ACCEPT to poll status"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "There is already a similar action processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/transferOutReject": {
      "post": {
        "tags": [
          "Transfer Domains"
        ],
        "summary": "Reject the outbound transfer",
        "description": "Rejects a pending outbound transfer request, keeping the domain at GoDaddy. Returns 202 - poll GET .../actions/TRANSFER_OUT_REJECT until the action reaches a terminal state.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain to reject the transfer out for",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reason",
            "description": "Transfer out reject reason",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "EVIDENCE_OF_FRAUD",
                "URDP_ACTION",
                "COURT_ORDER",
                "DISPUTE_OVER_IDENTITY",
                "NO_PAYMENT_FOR_PREVIOUS_REGISTRATION_PERIOD",
                "WRITTEN_OBJECTION",
                "TRANSFERRED_WITHIN_SIXTY_DAYS"
              ]
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/TRANSFER_OUT_REJECT to poll status"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "There is already a similar action processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/actions": {
      "get": {
        "tags": [
          "Domain Actions"
        ],
        "summary": "Retrieves a list of the most recent actions for the specified domain",
        "description": "Returns a paginated list of recent actions for the domain. Use to track long-running operations or audit domain history.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain whose actions are to be retrieved",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Action"
                  },
                  "type": "array"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/actions/{type}": {
      "delete": {
        "tags": [
          "Domain Actions"
        ],
        "summary": "Cancel the most recent user action for the specified domain",
        "description": "Cancels the most recent user-initiated action if it is still in a cancellable state. Returns 202 Accepted.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain whose action is to be cancelled",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "description": "The type of action to cancel",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "AUTH_CODE_REGENERATE",
                "CHANGE_OF_REGISTRANT_DELETE",
                "DOMAIN_DELETE",
                "DOMAIN_UPDATE",
                "DOMAIN_UPDATE_CONTACTS",
                "DOMAIN_UPDATE_NAME_SERVERS",
                "PRIVACY_FORWARDING_UPDATE",
                "REGISTER",
                "TRANSFER",
                "TRANSFER_IN",
                "TRANSFER_IN_ACCEPT",
                "TRANSFER_IN_CANCEL",
                "TRANSFER_IN_RESTART",
                "TRANSFER_IN_RETRY",
                "TRANSFER_OUT",
                "TRANSFER_OUT_ACCEPT",
                "TRANSFER_OUT_REJECT",
                "TRANSFER_OUT_REQUESTED"
              ]
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The action status does not allow performing the operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Domain Actions"
        ],
        "summary": "Retrieves the most recent action for the specified domain",
        "description": "Returns the most recent action of the specified type including status, timestamps, and any error details.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Domain whose action is to be retrieved",
            "name": "domain",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "description": "The type of action to retrieve",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "AUTH_CODE_REGENERATE",
                "CHANGE_OF_REGISTRANT_DELETE",
                "DOMAIN_DELETE",
                "DOMAIN_UPDATE",
                "DOMAIN_UPDATE_CONTACTS",
                "DOMAIN_UPDATE_NAME_SERVERS",
                "PRIVACY_FORWARDING_UPDATE",
                "REGISTER",
                "TRANSFER",
                "TRANSFER_IN",
                "TRANSFER_IN_ACCEPT",
                "TRANSFER_IN_CANCEL",
                "TRANSFER_IN_RESTART",
                "TRANSFER_IN_RETRY",
                "TRANSFER_OUT",
                "TRANSFER_OUT_ACCEPT",
                "TRANSFER_OUT_REJECT",
                "TRANSFER_OUT_REQUESTED"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Action"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The domain status does not allow performing the operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/forwards/{fqdn}": {
      "delete": {
        "tags": [
          "Manage Domain Settings"
        ],
        "parameters": [
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fully qualified domain name whose forwarding details are to be deleted.",
            "in": "path",
            "name": "fqdn",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The domain status does not allow performing the operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "A valid `fqdn` must be specified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "operationId": "domainsForwardsDelete",
        "summary": "Submit a forwarding cancellation request for the given fqdn",
        "description": "Removes the forwarding configuration for the FQDN. Returns 204 No Content."
      },
      "get": {
        "tags": [
          "Manage Domain Settings"
        ],
        "parameters": [
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fully qualified domain name whose forwarding details are to be retrieved.",
            "in": "path",
            "name": "fqdn",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Optionally include all sub domains if the fqdn specified is a domain and not a sub domain.",
            "name": "includeSubs",
            "required": false,
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/DomainForwarding"
                  },
                  "type": "array"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "A valid `fqdn` must be specified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "operationId": "domainsForwardsGet",
        "summary": "Retrieve the forwarding information for the given fqdn",
        "description": "Returns the forwarding configuration for the FQDN including destination URL and redirect type. Returns 404 if no forwarding rule exists."
      },
      "put": {
        "tags": [
          "Manage Domain Settings"
        ],
        "parameters": [
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fully qualified domain name whose forwarding details are to be modified.",
            "in": "path",
            "name": "fqdn",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DomainForwardingCreate"
              }
            }
          },
          "description": "Domain forwarding rule to create or replace on the fqdn",
          "required": true
        },
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "The domain status does not allow performing the operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request body doesn't fulfill schema, see details in `fields`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "operationId": "domainsForwardsPut",
        "summary": "Modify the forwarding information for the given fqdn",
        "description": "Updates the forwarding configuration for the FQDN. Only fields included in the request are modified. Returns 204 No Content."
      },
      "post": {
        "tags": [
          "Manage Domain Settings"
        ],
        "parameters": [
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount you're operating on behalf of; otherwise use your own customer id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The fully qualified domain name whose forwarding details are to be modified.",
            "in": "path",
            "name": "fqdn",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DomainForwardingCreate"
              }
            }
          },
          "description": "Domain forwarding rule to create for the specified fqdn",
          "required": true
        },
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "Provided `fqdn` already has forwarding setup",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Request body doesn't fulfill schema, see details in `fields`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "operationId": "domainsForwardsPost",
        "summary": "Create a new forwarding configuration for the given FQDN",
        "description": "Creates or replaces the forwarding configuration for the FQDN. Idempotent - replaying the same request produces the same rule. Returns 204 No Content."
      }
    },
    "/v2/customers/{customerId}/domains/notifications": {
      "get": {
        "tags": [
          "Domain Notifications"
        ],
        "summary": "Retrieve the next domain notification",
        "description": "Returns the next unacknowledged domain notification. Returns 200 with a Notification body, or 204 if no notifications are pending.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DomainNotification"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The customer does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/notifications/optIn": {
      "get": {
        "tags": [
          "Domain Notifications"
        ],
        "summary": "Retrieve a list of notification types that are opted in",
        "description": "Returns the notification types the account is currently opted in to receive.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/DomainNotification"
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The customer does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Domain Notifications"
        ],
        "summary": "Opt in to receive notifications for the submitted notification types",
        "description": "Opts the account in to receiving the specified notification types. Returns 204 No Content.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "types",
            "description": "The notification types that should be opted in",
            "in": "query",
            "required": true,
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "AUTH_CODE_REGENERATE",
                  "AUTO_RENEWAL",
                  "CHANGE_OF_REGISTRANT_DELETE",
                  "DOMAIN_DELETE",
                  "DOMAIN_UPDATE",
                  "DOMAIN_UPDATE_NAME_SERVERS",
                  "PRIVACY_FORWARDING_UPDATE",
                  "REGISTER",
                  "TRANSFER",
                  "TRANSFER_IN",
                  "TRANSFER_IN_ACCEPT",
                  "TRANSFER_IN_CANCEL",
                  "TRANSFER_IN_RESTART",
                  "TRANSFER_IN_RETRY",
                  "TRANSFER_OUT",
                  "TRANSFER_OUT_ACCEPT",
                  "TRANSFER_OUT_REJECT"
                ]
              }
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Command successful"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The customer does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "`type` must be specified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/notifications/schemas/{type}": {
      "get": {
        "tags": [
          "Domain Notifications"
        ],
        "summary": "Retrieve the schema for the notification data for the specified notification type",
        "description": "Returns the JSON schema for a specific notification type's data payload. Use to validate or parse notification data before processing.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The notification type whose schema should be retrieved",
            "name": "type",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "AUTH_CODE_REGENERATE",
                "AUTO_RENEWAL",
                "CHANGE_OF_REGISTRANT_DELETE",
                "DOMAIN_DELETE",
                "DOMAIN_UPDATE",
                "DOMAIN_UPDATE_NAME_SERVERS",
                "PRIVACY_FORWARDING_UPDATE",
                "REGISTER",
                "TRANSFER",
                "TRANSFER_IN",
                "TRANSFER_IN_ACCEPT",
                "TRANSFER_IN_CANCEL",
                "TRANSFER_IN_RESTART",
                "TRANSFER_IN_RETRY",
                "TRANSFER_OUT",
                "TRANSFER_OUT_ACCEPT",
                "TRANSFER_OUT_REJECT"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonSchema"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The schema type does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "`type` must be specified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/notifications/{notificationId}/acknowledge": {
      "post": {
        "tags": [
          "Domain Notifications"
        ],
        "summary": "Acknowledge a domain notification",
        "description": "Acknowledges a domain notification, removing it from the notification queue. Returns 204 No Content.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "notificationId",
            "description": "The notification ID to acknowledge",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Message acknowledged"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The domain does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/register": {
      "post": {
        "tags": [
          "Register Domains"
        ],
        "summary": "Purchase and register the specified Domain",
        "description": "Registers the specified domain. Requires a consent object with TLD agreement keys from the schema endpoint. Charges the account's billing method. Returns 202 - poll GET .../actions/REGISTER until the action reaches a terminal state.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/DomainPurchaseV2"
        },
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/REGISTER to poll status"
          },
          "400": {
            "description": "Request was malformed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "409": {
            "description": "There is already a similar action processing",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Based on restrictions declared in JSON schema returned by `./schema/{tld}`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/register/schema/{tld}": {
      "get": {
        "tags": [
          "Register Domains"
        ],
        "summary": "Retrieve the schema to be submitted when registering a Domain for the specified TLD",
        "description": "Returns the JSON schema for the registration request body for the specified TLD. Fetch before registering to identify required fields and TLD-specific constraints.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tld",
            "required": true,
            "in": "path",
            "description": "The Top-Level Domain whose schema should be retrieved",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JsonSchema"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The tld does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "`tld` must be specified",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/register/validate": {
      "post": {
        "tags": [
          "Register Domains"
        ],
        "summary": "Validate the request body using the Domain Registration Schema for the specified TLD",
        "description": "Validates the registration request body against the TLD schema with no side effects and no charge. Returns 204 on success.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The Customer identifier. Note: For API Resellers, performing actions on behalf of your customers, you need to specify the Subaccount customer identifier you're operating on behalf of.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "$ref": "#/components/requestBodies/DomainPurchaseV2"
        },
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "The customer does not exist",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "422": {
            "description": "Based on restrictions declared in JSON schema returned by `./schema/{tld}`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v2/domains/usage/{yyyymm}": {
      "get": {
        "tags": [
          "Domains API Usage"
        ],
        "summary": "Retrieve api usage request counts for a specific year/month.  The data is retained for a period of three months.",
        "description": "Returns monthly API request counts for the account. Data is retained for three months.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "description": "A client provided identifier for tracking this request.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "yyyymm",
            "description": "The year/month timeframe for the request counts (in the format yyyy-mm)",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}$"
            }
          },
          {
            "name": "includes",
            "required": false,
            "in": "query",
            "description": "Determines if the detail records (grouped by request path) are included in the response",
            "style": "form",
            "explode": false,
            "schema": {
              "type": "array",
              "items": {
                "enum": [
                  "details"
                ],
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UsageMonthly"
                }
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorLimit"
                }
              }
            }
          },
          "500": {
            "description": "Internal server error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "servers": [
    {
      "url": "https://api.godaddy.com",
      "description": "Production"
    }
  ],
  "components": {
    "requestBodies": {
      "DomainPurchase": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/DomainPurchase"
            }
          },
          "application/xml": {
            "schema": {
              "$ref": "#/components/schemas/DomainPurchase"
            }
          },
          "text/xml": {
            "schema": {
              "$ref": "#/components/schemas/DomainPurchase"
            }
          }
        },
        "description": "An instance document expected to match the JSON schema returned by `./schema/{tld}`",
        "required": true
      },
      "DomainTransferInV2": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/DomainTransferInV2"
            }
          }
        },
        "description": "Details for domain transfer purchase",
        "required": true
      },
      "DomainTransferAuthCode": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/DomainTransferAuthCode"
            }
          }
        },
        "description": "An Authorization code for transferring the Domain",
        "required": true
      },
      "DomainPurchaseV2": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/DomainPurchaseV2"
            }
          }
        },
        "description": "An instance document expected to match the JSON schema returned by `./schema/{tld}`",
        "required": true
      }
    },
    "schemas": {
      "Action": {
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of action being performed\n\n- **AUTH_CODE_PURCHASE** — Request for an auth code for a .de domain via POST /v2/customers/{customerId}/domains/{domain}/purchaseAuthCode.\n- **AUTH_CODE_REGENERATE** — Request to regenerate the authCode for a domain via POST /v2/customers/{customerId}/domains/{domain}/regenerateAuthCode\n- **AUTO_RENEWAL** — A Domain Auto Renew is in progress.\n- **BACKORDER_PURCHASE** — Request to purchase a domain backorder via POST /v2/customers/{customerId}/domains/backorders/purchase.\n- **BACKORDER_DELETE** — Request to cancel the current domain backorder via DELETE /v2/customers/{customerId}/domains/backorders/{domain}.\n- **BACKORDER_UPDATE** — Request update the current domain backorder via PATCH /v2/customers/{customerId}/domains/backorders/{domain}.\n- **CHANGE_OF_REGISTRANT_DELETE** — Request to delete a change of registrant request via DELETE /v2/customers/{customerId}/domains/{domain}/changeOfRegistrant.\n- **CONTACT_CREATE** — Request to create a contact via POST /v2/customers/{customerId}/domains/contacts.\n- **CONTACT_DELETE** — Request to delete a contact via DELETE /v2/customers/{customerId}/domains/contacts/{contactId}\n- **CONTACT_UPDATE** — Request to update a contact via PATCH /v2/customers/{customerId}/domains/contacts/{contactId}\n- **DNS_VERIFICATION** — Domain requires zone file setup.\n- **DNSSEC_CREATE** — Request to create DNSSEC record for the domain via PATCH /v2/customers/{customerId}/domains/{domain}/dnssecRecords.\n- **DNSSEC_DELETE** — Request to delete DNSSEC record for the domain via DELETE /v2/customers/{customerId}/domains/{domain}/dnssecRecords.\n- **DOMAIN_DELETE** — Request to delete the domain via DELETE /v2/customers/{customerId}/domains/{domain}\n- **DOMAIN_UPDATE** — Request to update the domain via PATCH /v2/customers/{customerId}/domains/{domain}\n- **DOMAIN_UPDATE_CONTACTS** — Request to update the domain contacts via PATCH /v2/customers/{customerId}/domains/{domain}/contacts\n- **DOMAIN_UPDATE_NAME_SERVERS** — Request to update the domain name servers via PUT /v2/customers/{customerId}/domains/{domain}/nameServers\n- **EXPIRY** — A Domain Expiration is in progress.\n- **HOST_CREATE** — Request to create a hostname via PUT /v2/customers/{customerId}/domains/{domain}/hosts/{hostname}\n- **HOST_DELETE** — Request to delete a hostname via DELETE /v2/customers/{customerId}/domains/{domain}/hosts/{hostname}\n- **ICANN_VERIFICATION** — Domain requires registrant verification for ICANN.\n- **PREMIUM** — Premium Domain domain sale is in progress.\n- **PRIVACY_FORWARDING_UPDATE** — Request to update privacy forwarding information via PATCH /v2/customers/{customerId}/domains/{domain}/privacy/forwarding.\n- **PRIVACY_PURCHASE** — Request to purchase privacy for a domain via POST /v2/customers/{customerId}/domains/{domain}/privacy/purchase\n- **PRIVACY_DELETE** — Request to remove privacy from a domain via DELETE /v2/customers/{customerId}/domains/{domain}/privacy\n- **REDEEM** — Request to redeem a domain via POST /v2/customers/{customerId}/domains/{domain}/redeem\n- **REGISTER** — Request to register a domain via POST /v2/customers/{customerId}/domains/{domain}/register\n- **RENEW** — Request to renew a domain via POST /v2/customers/{customerId}/domains/{domain}/renew\n- **RENEW_UNDO** — Request to undo a renewal for a uk domain via POST /v2/customers/{customerId}/domains/{domain}/undoRenew\n- **TRADE** — A domain trade request is in progress\n- **TRADE_CANCEL** — Request to cancel a trade for a domain via POST /v2/customers/{customerId}/domains/{domain}/tradeCancel\n- **TRADE_PURCHASE** — Request to purchase a trade for a domain via POST /v2/customers/{customerId}/domains/{domain}/tradePurchase\n- **TRADE_PURCHASE_AUTH_TEXT_MESSAGE** — Request for a trade purchase text message for a domain via POST /v2/customers/{customerId}/domains/{domain}/tradePurchaseAuthorizationTextMessage\n- **TRADE_RESEND_AUTH_EMAIL** — Request to resend the trade auth email message for a domain via POST /v2/customers/{customerId}/domains/{domain}/tradeResendAuthorizationEmail\n- **TRANSFER** — Request to transfer a domain via POST /v2/customers/{customerId}/domains/{domain}/transfer\n- **TRANSFER_IN** — A domain transfer in request is in progress.\n- **TRANSFER_IN_ACCEPT** — Request to accept a domain transfer in via POST /v2/customers/{customerId}/domains/{domain}/transferInAccept\n- **TRANSFER_IN_CANCEL** — Request to cancel a domain transfer via POST /v2/customers/{customerId}/domains/{domain}/transferInCancel\n- **TRANSFER_IN_RESTART** — Request to restart a domain transfer in via POST /v2/customers/{customerId}/domains/{domain}/transferInRestart\n- **TRANSFER_IN_RETRY** — Request to retry a domain transfer in via POST /v2/customers/{customerId}/domains/{domain}/transferInRetry\n- **TRANSFER_OUT** — A domain transfer out request is in progress.\n- **TRANSFER_OUT_ACCEPT** — Request to accept a transfer out request for a domain via POST /v2/customers/{customerId}/domains/{domain}/transferOutAccept\n- **TRANSFER_OUT_REJECT** — Request to reject a transfer out request for a domain via POST /v2/customers/{customerId}/domains/{domain}/transferOutReject\n- **TRANSFER_OUT_REQUESTED** — Request to transfer out for a domain (.de) via POST /v2/customers/{customerId}/domains/{domain}/transferOut\n- **TRANSIT** — Request to transit a de or at domain at the registry via POST /v2/customers/{customerId}/domains/{domain}/transit",
            "enum": [
              "AUTH_CODE_PURCHASE",
              "AUTH_CODE_REGENERATE",
              "AUTO_RENEWAL",
              "BACKORDER_PURCHASE",
              "BACKORDER_DELETE",
              "BACKORDER_UPDATE",
              "CHANGE_OF_REGISTRANT_DELETE",
              "CONTACT_CREATE",
              "CONTACT_DELETE",
              "CONTACT_UPDATE",
              "DNS_VERIFICATION",
              "DNSSEC_CREATE",
              "DNSSEC_DELETE",
              "DOMAIN_DELETE",
              "DOMAIN_UPDATE",
              "DOMAIN_UPDATE_CONTACTS",
              "DOMAIN_UPDATE_NAME_SERVERS",
              "EXPIRY",
              "HOST_CREATE",
              "HOST_DELETE",
              "ICANN_VERIFICATION",
              "MIGRATE",
              "MIGRATE_IN",
              "PREMIUM",
              "PRIVACY_PURCHASE",
              "PRIVACY_DELETE",
              "REDEEM",
              "REGISTER",
              "RENEW",
              "RENEW_UNDO",
              "TRADE",
              "TRADE_CANCEL",
              "TRADE_PURCHASE",
              "TRADE_PURCHASE_AUTH_TEXT_MESSAGE",
              "TRADE_RESEND_AUTH_EMAIL",
              "TRANSFER",
              "TRANSFER_IN",
              "TRANSFER_IN_ACCEPT",
              "TRANSFER_IN_CANCEL",
              "TRANSFER_IN_RESTART",
              "TRANSFER_IN_RETRY",
              "TRANSFER_OUT",
              "TRANSFER_OUT_ACCEPT",
              "TRANSFER_OUT_REJECT",
              "TRANSFER_OUT_REQUESTED",
              "TRANSIT"
            ]
          },
          "origination": {
            "type": "string",
            "enum": [
              "USER",
              "SYSTEM"
            ],
            "description": "The origination of the action\n\n- **USER** — These are user requests.\n- **SYSTEM** — These are system processing actions."
          },
          "createdAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Timestamp indicating when the action was created"
          },
          "startedAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Timestamp indicating when the action was started"
          },
          "completedAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Timestamp indicating when the action was completed"
          },
          "modifiedAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Timestamp indicating when the action was last modified"
          },
          "status": {
            "type": "string",
            "default": "ACCEPTED",
            "enum": [
              "ACCEPTED",
              "AWAITING",
              "CANCELLED",
              "FAILED",
              "PENDING",
              "SUCCESS"
            ],
            "description": "The current status of the action\n\n- **ACCEPTED** — The action has been queued; processing has not started.\n- **AWAITING** — The action is waiting on user input.\n- **CANCELLED** — The action has been cancelled by the user.\n- **FAILED** — An error occurred while the action was processing; no more processing will be performed.\n- **PENDING** — The action is being processed.\n- **SUCCESS** — The action has completed; no additional processing is required."
          },
          "reason": {
            "$ref": "#/components/schemas/ActionReason"
          },
          "requestId": {
            "type": "string",
            "description": "A client provided identifier (via X-Request-Id header) used for tracking individual requests"
          }
        },
        "required": [
          "type",
          "origination",
          "createdAt",
          "status"
        ],
        "type": "object"
      },
      "ActionReason": {
        "additionalProperties": false,
        "properties": {
          "code": {
            "type": "string",
            "format": "constant",
            "pattern": "^[A-Z_][A-Z0-9_]*$",
            "description": "Short identifier, suitable for indicating the reason for the current status and how to handle within client code"
          },
          "message": {
            "type": "string",
            "description": "Human-readable, English description of the code"
          },
          "fields": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ErrorField"
            },
            "description": "List of the specific fields, and the errors found with their contents"
          }
        },
        "required": [
          "code"
        ],
        "type": "object"
      },
      "Address": {
        "properties": {
          "address1": {
            "format": "street-address",
            "type": "string"
          },
          "address2": {
            "format": "street-address2",
            "type": "string"
          },
          "city": {
            "format": "city-name",
            "type": "string"
          },
          "country": {
            "default": "US",
            "description": "Two-letter ISO country code to be used as a hint for target region.\nNOTE: These are sample values; see [ISO country codes](http://www.iso.org/iso/country_codes.htm).",
            "enum": [
              "AC",
              "AD",
              "AE",
              "AF",
              "AG",
              "AI",
              "AL",
              "AM",
              "AO",
              "AQ",
              "AR",
              "AS",
              "AT",
              "AU",
              "AW",
              "AX",
              "AZ",
              "BA",
              "BB",
              "BD",
              "BE",
              "BF",
              "BG",
              "BH",
              "BI",
              "BJ",
              "BM",
              "BN",
              "BO",
              "BQ",
              "BR",
              "BS",
              "BT",
              "BV",
              "BW",
              "BY",
              "BZ",
              "CA",
              "CC",
              "CD",
              "CF",
              "CG",
              "CH",
              "CI",
              "CK",
              "CL",
              "CM",
              "CN",
              "CO",
              "CR",
              "CV",
              "CW",
              "CX",
              "CY",
              "CZ",
              "DE",
              "DJ",
              "DK",
              "DM",
              "DO",
              "DZ",
              "EC",
              "EE",
              "EG",
              "EH",
              "ER",
              "ES",
              "ET",
              "FI",
              "FJ",
              "FK",
              "FM",
              "FO",
              "FR",
              "GA",
              "GB",
              "GD",
              "GE",
              "GF",
              "GG",
              "GH",
              "GI",
              "GL",
              "GM",
              "GN",
              "GP",
              "GQ",
              "GR",
              "GS",
              "GT",
              "GU",
              "GW",
              "GY",
              "HK",
              "HM",
              "HN",
              "HR",
              "HT",
              "HU",
              "ID",
              "IE",
              "IL",
              "IM",
              "IN",
              "IO",
              "IQ",
              "IS",
              "IT",
              "JE",
              "JM",
              "JO",
              "JP",
              "KE",
              "KG",
              "KH",
              "KI",
              "KM",
              "KN",
              "KR",
              "KV",
              "KW",
              "KY",
              "KZ",
              "LA",
              "LB",
              "LC",
              "LI",
              "LK",
              "LR",
              "LS",
              "LT",
              "LU",
              "LV",
              "LY",
              "MA",
              "MC",
              "MD",
              "ME",
              "MG",
              "MH",
              "MK",
              "ML",
              "MM",
              "MN",
              "MO",
              "MP",
              "MQ",
              "MR",
              "MS",
              "MT",
              "MU",
              "MV",
              "MW",
              "MX",
              "MY",
              "MZ",
              "NA",
              "NC",
              "NE",
              "NF",
              "NG",
              "NI",
              "NL",
              "NO",
              "NP",
              "NR",
              "NU",
              "NZ",
              "OM",
              "PA",
              "PE",
              "PF",
              "PG",
              "PH",
              "PK",
              "PL",
              "PM",
              "PN",
              "PR",
              "PS",
              "PT",
              "PW",
              "PY",
              "QA",
              "RE",
              "RO",
              "RS",
              "RU",
              "RW",
              "SA",
              "SB",
              "SC",
              "SE",
              "SG",
              "SH",
              "SI",
              "SJ",
              "SK",
              "SL",
              "SM",
              "SN",
              "SO",
              "SR",
              "ST",
              "SV",
              "SX",
              "SZ",
              "TC",
              "TD",
              "TF",
              "TG",
              "TH",
              "TJ",
              "TK",
              "TL",
              "TM",
              "TN",
              "TO",
              "TP",
              "TR",
              "TT",
              "TV",
              "TW",
              "TZ",
              "UA",
              "UG",
              "UM",
              "US",
              "UY",
              "UZ",
              "VA",
              "VC",
              "VE",
              "VG",
              "VI",
              "VN",
              "VU",
              "WF",
              "WS",
              "YE",
              "YT",
              "ZA",
              "ZM",
              "ZW"
            ],
            "format": "iso-country-code",
            "type": "string"
          },
          "postalCode": {
            "description": "Postal or zip code",
            "format": "postal-code",
            "type": "string"
          },
          "state": {
            "description": "State or province or territory",
            "format": "state-province-territory",
            "type": "string"
          }
        },
        "required": [
          "address1",
          "city",
          "state",
          "postalCode",
          "country"
        ],
        "type": "object"
      },
      "ArrayOfDNSRecord": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/DNSRecord"
        }
      },
      "Consent": {
        "properties": {
          "agreedAt": {
            "description": "Timestamp indicating when the end-user consented to these legal agreements",
            "format": "iso-datetime",
            "type": "string"
          },
          "agreedBy": {
            "description": "Originating client IP address of the end-user's computer when they consented to these legal agreements",
            "type": "string"
          },
          "agreementKeys": {
            "description": "Unique identifiers of the legal agreements to which the end-user has agreed, as returned from the/domains/agreements endpoint",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "agreementKeys",
          "agreedBy",
          "agreedAt"
        ],
        "type": "object"
      },
      "ConsentV2": {
        "additionalProperties": false,
        "properties": {
          "agreementKeys": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Unique identifiers of the legal agreements to which the end-user has agreed, as returned from the/domains/agreements endpoint"
          },
          "price": {
            "type": "integer",
            "format": "currency-micro-unit",
            "description": "Price of the domain excluding taxes or fees. Please use GET /v1/domains/available to retrieve the price and currency for the domain"
          },
          "currency": {
            "type": "string",
            "format": "iso-currency-code",
            "default": "USD",
            "pattern": "^[A-Z][A-Z][A-Z]$",
            "description": "Currency in which the `price` is listed"
          },
          "registryPremiumPricing": {
            "type": "boolean",
            "description": "Only required for hosted registrar if domain is premium. If true indicates that the `price` and `currency` listed are the registry premium price and currency for the domain"
          },
          "agreedBy": {
            "type": "string",
            "description": "Originating client IP address of the end-user's computer when they consented to these legal agreements"
          },
          "agreedAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Timestamp indicating when the end-user consented to these legal agreements"
          },
          "claimToken": {
            "description": "The trademark claim token, only needed if the domain has an active trademark claim",
            "type": "string"
          }
        },
        "required": [
          "agreementKeys",
          "price",
          "currency",
          "agreedBy",
          "agreedAt"
        ],
        "type": "object"
      },
      "ConsentRedemption": {
        "additionalProperties": false,
        "properties": {
          "price": {
            "type": "integer",
            "format": "currency-micro-unit",
            "description": "Price for the domain renewal (if domain renewal required for redemption). Please use GET /v2/customers/{customerId}/domains/{domain} to retrieve the redemption price and currency for the domain"
          },
          "fee": {
            "type": "integer",
            "format": "currency-micro-unit",
            "description": "Fee charged for the domain redemption. Please use GET /v2/customers/{customerId}/domains/{domain} to retrieve the redemption fee and currency for the domain"
          },
          "currency": {
            "type": "string",
            "format": "iso-currency-code",
            "default": "USD",
            "pattern": "^[A-Z][A-Z][A-Z]$",
            "description": "Currency in which the `price` and `fee` are listed"
          },
          "agreedBy": {
            "type": "string",
            "description": "Originating client IP address of the end-user's computer when they consented to these legal agreements"
          },
          "agreedAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Timestamp indicating when the end-user consented to these legal agreements"
          }
        },
        "required": [
          "price",
          "fee",
          "currency",
          "agreedBy",
          "agreedAt"
        ],
        "type": "object"
      },
      "ConsentRenew": {
        "additionalProperties": false,
        "properties": {
          "price": {
            "type": "integer",
            "format": "currency-micro-unit",
            "description": "Price of the domain excluding taxes or fees. Please use GET /v2/customers/{customerId}/domains/{domain} to retrieve the renewal price and currency for the domain"
          },
          "currency": {
            "type": "string",
            "format": "iso-currency-code",
            "default": "USD",
            "pattern": "^[A-Z][A-Z][A-Z]$",
            "description": "Currency in which the `price` is listed"
          },
          "registryPremiumPricing": {
            "type": "boolean",
            "description": "Only required for hosted registrar if domain is premium. If true indicates that the `price` and `currency` listed are the registry premium price and currency for the domain"
          },
          "agreedBy": {
            "type": "string",
            "description": "Originating client IP address of the end-user's computer when they consented to these legal agreements"
          },
          "agreedAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Timestamp indicating when the end-user consented to these legal agreements"
          }
        },
        "required": [
          "price",
          "currency",
          "agreedBy",
          "agreedAt"
        ],
        "type": "object"
      },
      "ConsentDomainUpdate": {
        "properties": {
          "agreedAt": {
            "description": "Timestamp indicating when the end-user consented to these agreements",
            "format": "iso-datetime",
            "type": "string"
          },
          "agreedBy": {
            "description": "Originating client IP address of the end-user's computer when they consented to the agreements",
            "type": "string"
          },
          "agreementKeys": {
            "description": "Unique identifiers of the agreements to which the end-user has agreed, as required by the elements being updated\n\n- **EXPOSE_REGISTRANT_ORGANIZATION** — Required when the exposeRegistrantOrganization field is updated to true.\n- **EXPOSE_WHOIS** — Required when the exposeWhois field is updated to true.",
            "items": {
              "enum": [
                "EXPOSE_REGISTRANT_ORGANIZATION",
                "EXPOSE_WHOIS"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "agreementKeys",
          "agreedBy",
          "agreedAt"
        ],
        "type": "object"
      },
      "Contact": {
        "properties": {
          "addressMailing": {
            "$ref": "#/components/schemas/Address"
          },
          "email": {
            "format": "email",
            "type": "string"
          },
          "fax": {
            "format": "phone",
            "type": "string"
          },
          "jobTitle": {
            "type": "string"
          },
          "nameFirst": {
            "format": "person-name",
            "type": "string"
          },
          "nameLast": {
            "format": "person-name",
            "type": "string"
          },
          "nameMiddle": {
            "type": "string"
          },
          "organization": {
            "format": "organization-name",
            "type": "string"
          },
          "phone": {
            "format": "phone",
            "type": "string"
          }
        },
        "required": [
          "nameFirst",
          "nameLast",
          "email",
          "phone",
          "addressMailing"
        ],
        "type": "object"
      },
      "ContactDomain": {
        "properties": {
          "contactId": {
            "type": "string",
            "description": "Unique identifier for this Contact"
          },
          "encoding": {
            "type": "string",
            "default": "ASCII",
            "enum": [
              "ASCII",
              "UTF-8"
            ],
            "description": "The encoding of the contact data\n\n- **ASCII** — Data contains only ASCII characters that are not region or language specific.\n- **UTF-8** — Data contains characters that are specific to a region or language."
          },
          "nameFirst": {
            "type": "string",
            "format": "person-name",
            "maxLength": 30
          },
          "nameMiddle": {
            "type": "string"
          },
          "nameLast": {
            "type": "string",
            "format": "person-name",
            "maxLength": 30
          },
          "organization": {
            "type": "string",
            "format": "organization-name",
            "maxLength": 100
          },
          "jobTitle": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 80
          },
          "phone": {
            "type": "string",
            "format": "phone",
            "maxLength": 17
          },
          "fax": {
            "type": "string",
            "format": "phone",
            "maxLength": 17
          },
          "addressMailing": {
            "$ref": "#/components/schemas/Address"
          },
          "exposeRegistrantOrganization": {
            "type": "boolean",
            "description": "Whether or not the domain registrant contact organization field should be shown in the WHOIS"
          },
          "exposeWhois": {
            "type": "boolean",
            "description": "Whether or not the contact details should be shown in the WHOIS"
          },
          "metadata": {
            "type": "object",
            "description": "The contact eligibility data fields as specified by GET /v2/customers/{customerId}/domains/contacts/schema/{tld}"
          },
          "tlds": {
            "type": "array",
            "description": "The tlds that this contact can be assigned to",
            "items": {
              "type": "string"
            }
          },
          "_createdAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Timestamp indicating when the contact was created"
          },
          "_modifiedAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Timestamp indicating when the contact was last modified"
          },
          "_deleted": {
            "type": "boolean",
            "description": "Flag indicating if the contact has been logically deleted in the system"
          },
          "_revision": {
            "type": "integer",
            "description": "The current revision number of the contact."
          }
        },
        "required": [
          "nameFirst",
          "nameLast",
          "email",
          "phone",
          "addressMailing",
          "exposeWhois",
          "exposeRegistrantOrganization"
        ],
        "type": "object"
      },
      "ContactDomainCreate": {
        "additionalProperties": false,
        "properties": {
          "encoding": {
            "type": "string",
            "default": "ASCII",
            "enum": [
              "ASCII",
              "UTF-8"
            ],
            "description": "The encoding of the contact data\n\n- **ASCII** — Data contains only ASCII characters that are not region or language specific.\n- **UTF-8** — Data contains characters that are specific to a region or language."
          },
          "nameFirst": {
            "type": "string",
            "format": "person-name",
            "maxLength": 30
          },
          "nameMiddle": {
            "type": "string"
          },
          "nameLast": {
            "type": "string",
            "format": "person-name",
            "maxLength": 30
          },
          "organization": {
            "type": "string",
            "format": "organization-name",
            "maxLength": 100
          },
          "jobTitle": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 80
          },
          "phone": {
            "type": "string",
            "format": "phone",
            "maxLength": 17
          },
          "fax": {
            "type": "string",
            "format": "phone",
            "maxLength": 17
          },
          "addressMailing": {
            "$ref": "#/components/schemas/Address"
          },
          "metadata": {
            "type": "object",
            "description": "The contact eligibility data fields as specified by GET /v2/customers/{customerId}/domains/contacts/schema/{tld}"
          }
        },
        "required": [
          "encoding",
          "nameFirst",
          "nameLast",
          "email",
          "phone",
          "addressMailing"
        ],
        "type": "object"
      },
      "ContactRegistrantChange": {
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "maxLength": 80
          },
          "firstName": {
            "type": "string",
            "format": "person-name",
            "maxLength": 30
          },
          "lastName": {
            "type": "string",
            "format": "person-name",
            "maxLength": 30
          },
          "organization": {
            "type": "string",
            "format": "organization-name",
            "maxLength": 100
          }
        },
        "required": [
          "email",
          "firstName",
          "lastName"
        ],
        "type": "object"
      },
      "DNSRecord": {
        "properties": {
          "data": {
            "type": "string"
          },
          "name": {
            "format": "domain",
            "type": "string"
          },
          "port": {
            "description": "Service port (SRV only)",
            "maximum": 65535,
            "minimum": 1,
            "type": "integer"
          },
          "priority": {
            "description": "Record priority (MX and SRV only)",
            "format": "integer-positive",
            "type": "integer"
          },
          "protocol": {
            "description": "Service protocol (SRV only)",
            "type": "string"
          },
          "service": {
            "description": "Service type (SRV only)",
            "type": "string"
          },
          "ttl": {
            "format": "integer-positive",
            "type": "integer"
          },
          "type": {
            "enum": [
              "A",
              "AAAA",
              "CNAME",
              "MX",
              "NS",
              "SOA",
              "SRV",
              "TXT"
            ],
            "type": "string"
          },
          "weight": {
            "description": "Record weight (SRV only)",
            "format": "integer-positive",
            "type": "integer"
          }
        },
        "required": [
          "type",
          "name",
          "data"
        ],
        "type": "object"
      },
      "DNSRecordCreateType": {
        "properties": {
          "data": {
            "type": "string"
          },
          "name": {
            "format": "domain",
            "type": "string"
          },
          "port": {
            "description": "Service port (SRV only)",
            "maximum": 65535,
            "minimum": 1,
            "type": "integer"
          },
          "priority": {
            "description": "Record priority (MX and SRV only)",
            "format": "integer-positive",
            "type": "integer"
          },
          "protocol": {
            "description": "Service protocol (SRV only)",
            "type": "string"
          },
          "service": {
            "description": "Service type (SRV only)",
            "type": "string"
          },
          "ttl": {
            "format": "integer-positive",
            "type": "integer"
          },
          "weight": {
            "description": "Record weight (SRV only)",
            "format": "integer-positive",
            "type": "integer"
          }
        },
        "required": [
          "name",
          "data"
        ],
        "type": "object"
      },
      "DNSRecordCreateTypeName": {
        "properties": {
          "data": {
            "type": "string"
          },
          "port": {
            "description": "Service port (SRV only)",
            "maximum": 65535,
            "minimum": 1,
            "type": "integer"
          },
          "priority": {
            "description": "Record priority (MX and SRV only)",
            "format": "integer-positive",
            "type": "integer"
          },
          "protocol": {
            "description": "Service protocol (SRV only)",
            "type": "string"
          },
          "service": {
            "description": "Service type (SRV only)",
            "type": "string"
          },
          "ttl": {
            "format": "integer-positive",
            "type": "integer"
          },
          "weight": {
            "description": "Record weight (SRV only)",
            "format": "integer-positive",
            "type": "integer"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "DomainAvailableBulk": {
        "properties": {
          "domains": {
            "description": "Domain available response array",
            "items": {
              "$ref": "#/components/schemas/DomainAvailableResponse"
            },
            "type": "array"
          }
        },
        "required": [
          "domains"
        ],
        "type": "object"
      },
      "DomainAvailableBulkMixed": {
        "properties": {
          "domains": {
            "description": "Domain available response array",
            "items": {
              "$ref": "#/components/schemas/DomainAvailableResponse"
            },
            "type": "array"
          },
          "errors": {
            "description": "Errors encountered while performing a domain available check",
            "items": {
              "$ref": "#/components/schemas/DomainAvailableError"
            },
            "type": "array"
          }
        },
        "required": [
          "domains"
        ],
        "type": "object"
      },
      "DomainAvailableError": {
        "properties": {
          "code": {
            "description": "Short identifier for the error, suitable for indicating the specific error within client code",
            "format": "constant",
            "type": "string"
          },
          "domain": {
            "description": "Domain name",
            "type": "string"
          },
          "message": {
            "description": "Human-readable, English description of the error",
            "type": "string"
          },
          "path": {
            "description": "JSONPath referring to a field containing an error, or a field that refers to an\nobject containing an error (with more detail in `pathRelated`).",
            "format": "json-path",
            "type": "string"
          },
          "status": {
            "description": "HTTP status code that would return for a single check",
            "type": "integer"
          }
        },
        "required": [
          "code",
          "domain",
          "path",
          "status"
        ],
        "type": "object"
      },
      "DomainAvailableResponse": {
        "properties": {
          "available": {
            "description": "Whether or not the domain name is available",
            "type": "boolean"
          },
          "currency": {
            "default": "USD",
            "description": "Currency in which the `price` is listed. Only returned if tld is offered",
            "format": "iso-currency-code",
            "type": "string"
          },
          "definitive": {
            "description": "Whether or not the `available` answer has been definitively verified with the registry",
            "type": "boolean"
          },
          "domain": {
            "description": "Domain name",
            "type": "string"
          },
          "period": {
            "description": "Number of years included in the price. Only returned if tld is offered",
            "format": "integer-positive",
            "type": "integer"
          },
          "price": {
            "description": "Price of the domain excluding taxes or fees. Only returned if tld is offered",
            "format": "currency-micro-unit",
            "type": "integer"
          }
        },
        "required": [
          "domain",
          "available",
          "definitive"
        ],
        "type": "object"
      },
      "DomainChangeOfRegistrant": {
        "properties": {
          "createDate": {
            "type": "string",
            "format": "iso-datetime"
          },
          "gainingContact": {
            "$ref": "#/components/schemas/ContactRegistrantChange"
          },
          "losingContact": {
            "$ref": "#/components/schemas/ContactRegistrantChange"
          },
          "otherDomainsAffected": {
            "type": "integer",
            "format": "integer-positive"
          },
          "shopperEmail": {
            "type": "string",
            "format": "email"
          }
        },
        "required": [
          "createDate",
          "gainingContact",
          "losingContact"
        ],
        "type": "object"
      },
      "DomainContacts": {
        "properties": {
          "contactAdmin": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactBilling": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactRegistrant": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactTech": {
            "$ref": "#/components/schemas/Contact"
          }
        },
        "required": [
          "contactRegistrant"
        ],
        "type": "object"
      },
      "DomainContactsCreateV2": {
        "additionalProperties": false,
        "type": "object",
        "properties": {
          "admin": {
            "$ref": "#/components/schemas/ContactDomainCreate"
          },
          "adminId": {
            "description": "Unique identifier of the contact that the user wants to use for the domain admin contact. This can be specified instead of the `admin` property.\n",
            "type": "string"
          },
          "billing": {
            "$ref": "#/components/schemas/ContactDomainCreate"
          },
          "billingId": {
            "description": "Unique identifier of the contact that the user wants to use for the domain billing contact. This can be specified instead of the `billing` property.\n",
            "type": "string"
          },
          "registrant": {
            "$ref": "#/components/schemas/ContactDomainCreate"
          },
          "registrantId": {
            "description": "Unique identifier of the contact that the user wants to use for the domain registrant contact. This can be specified instead of the `registrant` property.\n",
            "type": "string"
          },
          "tech": {
            "$ref": "#/components/schemas/ContactDomainCreate"
          },
          "techId": {
            "description": "Unique identifier of the contact that the user wants to use for the domain tech contact. This can be specified instead of the `tech` property.\n",
            "type": "string"
          }
        }
      },
      "DomainContactsUpdateV2": {
        "additionalProperties": false,
        "properties": {
          "identityDocumentId": {
            "type": "string",
            "description": "Unique identifier of the identify document that the user wants to associate with the domain whose registrant contact is being updated. This is required only if user is trying to update registrant contact and the owning registry has a requirement for an approved identity document"
          },
          "contacts": {
            "$ref": "#/components/schemas/DomainContactsCreateV2"
          }
        },
        "type": "object"
      },
      "DomainContactsV2": {
        "additionalProperties": false,
        "properties": {
          "registrant": {
            "$ref": "#/components/schemas/ContactDomain"
          },
          "admin": {
            "$ref": "#/components/schemas/ContactDomain"
          },
          "tech": {
            "$ref": "#/components/schemas/ContactDomain"
          },
          "billing": {
            "$ref": "#/components/schemas/ContactDomain"
          }
        },
        "type": "object"
      },
      "DomainDetail": {
        "properties": {
          "authCode": {
            "description": "Authorization code for transferring the Domain",
            "type": "string"
          },
          "contactAdmin": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactBilling": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactRegistrant": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactTech": {
            "$ref": "#/components/schemas/Contact"
          },
          "createdAt": {
            "description": "Date and time when this domain was created",
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "description": "Date and time when this domain was deleted",
            "format": "date-time",
            "type": "string"
          },
          "transferAwayEligibleAt": {
            "description": "Date and time when this domain is eligible to transfer",
            "format": "date-time",
            "type": "string"
          },
          "domain": {
            "description": "Name of the domain",
            "type": "string"
          },
          "domainId": {
            "description": "Unique identifier for this Domain",
            "format": "double",
            "type": "number"
          },
          "expirationProtected": {
            "description": "Whether or not the domain is protected from expiration",
            "type": "boolean"
          },
          "expires": {
            "description": "Date and time when this domain will expire",
            "format": "date-time",
            "type": "string"
          },
          "exposeRegistrantOrganization": {
            "type": "boolean",
            "description": "Whether or not the domain registrant contact organization field should be shown in the WHOIS"
          },
          "exposeWhois": {
            "description": "Whether or not the domain contact details should be shown in the WHOIS",
            "type": "boolean"
          },
          "holdRegistrar": {
            "description": "Whether or not the domain is on-hold by the registrar",
            "type": "boolean"
          },
          "locked": {
            "description": "Whether or not the domain is locked to prevent transfers",
            "type": "boolean"
          },
          "nameServers": {
            "description": "Fully-qualified domain names for DNS servers",
            "items": {
              "format": "host-name",
              "type": "string"
            },
            "type": "array"
          },
          "privacy": {
            "description": "Whether or not the domain has privacy protection",
            "type": "boolean"
          },
          "registrarCreatedAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Date and time when this domain was created by the registrar"
          },
          "renewAuto": {
            "description": "Whether or not the domain is configured to automatically renew",
            "type": "boolean"
          },
          "renewDeadline": {
            "description": "Date the domain must renew on",
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "description": "Processing status of the domain\n\n- **ACTIVE** — All is well\n- **AWAITING*** — System is waiting for the end-user to complete an action\n- **CANCELLED*** — Domain has been cancelled, and may or may not be reclaimable\n- **CONFISCATED** — Domain has been confiscated, usually for abuse, chargeback, or fraud\n- **DISABLED*** — Domain has been disabled\n- **EXCLUDED*** — Domain has been excluded from Firehose registration\n- **EXPIRED*** — Domain has expired\n- **FAILED*** — Domain has failed a required action, and the system is no longer retrying\n- **HELD*** — Domain has been placed on hold, and likely requires intervention from Support\n- **LOCKED*** — Domain has been locked, and likely requires intervention from Support\n- **PARKED*** — Domain has been parked, and likely requires intervention from Support\n- **PENDING*** — Domain is working its way through an automated workflow\n- **RESERVED*** — Domain is reserved, and likely requires intervention from Support\n- **REVERTED** — Domain has been reverted, and likely requires intervention from Support\n- **SUSPENDED*** — Domain has been suspended, and likely requires intervention from Support\n- **TRANSFERRED*** — Domain has been transferred out\n- **UNKNOWN** — Domain is in an unknown state\n- **UNLOCKED*** — Domain has been unlocked, and likely requires intervention from Support\n- **UNPARKED*** — Domain has been unparked, and likely requires intervention from Support\n- **UPDATED*** — Domain ownership has been transferred to another account",
            "type": "string"
          },
          "subaccountId": {
            "description": "Reseller subaccount shopperid who can manage the domain",
            "type": "string"
          },
          "transferProtected": {
            "description": "Whether or not the domain is protected from transfer",
            "type": "boolean"
          },
          "verifications": {
            "$ref": "#/components/schemas/VerificationsDomain"
          }
        },
        "required": [
          "domainId",
          "domain",
          "status",
          "expirationProtected",
          "holdRegistrar",
          "locked",
          "privacy",
          "renewAuto",
          "renewDeadline",
          "transferProtected",
          "createdAt",
          "authCode",
          "nameServers",
          "contactRegistrant",
          "contactBilling",
          "contactAdmin",
          "contactTech"
        ],
        "type": "object"
      },
      "DomainDetailV2": {
        "additionalProperties": false,
        "properties": {
          "domainId": {
            "type": "string",
            "description": "Unique identifier for this Domain"
          },
          "domain": {
            "type": "string",
            "description": "Name of the domain",
            "format": "domain"
          },
          "subaccountId": {
            "type": "string",
            "description": "Reseller subaccount shopperid who can manage the domain"
          },
          "status": {
            "type": "string",
            "description": "The current status of the domain\n\n- **ACTIVE** — Domain has been registered and is active.\n- **CANCELLED** — Domain has been cancelled by the user or system, and is not reclaimable.\n- **DELETED_REDEEMABLE** — Domain is deleted but is redeemable.\n- **EXPIRED** — Domain has expired.\n- **FAILED** — Domain registration or transfer error.\n- **LOCKED_REGISTRAR** — Domain is locked at the registrar - this is usually the result of a spam, abuse, etc.\n- **PARKED** — Domain has been parked.\n- **HELD_REGISTRAR** — Domain is held at the registrar and cannot be transferred or modified - this is usually the result of a dispute.\n- **OWNERSHIP_CHANGED** — Domain has been moved to another account.\n- **PENDING_TRANSFER** — Domain transfer has been requested and is pending the transfer process.\n- **PENDING_REGISTRATION** — Domain is pending setup at the registry.\n- **REPOSSESSED** — Domain has been confiscated - this is usually the result of a chargeback, fraud, abuse, etc.).\n- **SUSPENDED** — Domain is in violation and has been suspended.\n- **TRANSFERRED** — Domain has been transferred to another registrar.",
            "enum": [
              "ACTIVE",
              "CANCELLED",
              "DELETED_REDEEMABLE",
              "EXPIRED",
              "FAILED",
              "LOCKED_REGISTRAR",
              "PARKED",
              "HELD_REGISTRAR",
              "OWNERSHIP_CHANGED",
              "PENDING_TRANSFER",
              "PENDING_REGISTRATION",
              "REPOSSESSED",
              "SUSPENDED",
              "TRANSFERRED"
            ]
          },
          "expiresAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Date and time when this domain will expire"
          },
          "expirationProtected": {
            "type": "boolean",
            "description": "Whether or not the domain is protected from expiration"
          },
          "holdRegistrar": {
            "type": "boolean",
            "description": "Whether or not the domain is on-hold by the registrar"
          },
          "locked": {
            "type": "boolean",
            "description": "Whether or not the domain is locked to prevent transfers"
          },
          "privacy": {
            "type": "boolean",
            "description": "Whether or not the domain has privacy protection"
          },
          "registrarCreatedAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Date and time when this domain was created by the registrar"
          },
          "renewAuto": {
            "type": "boolean",
            "description": "Whether or not the domain is configured to automatically renew"
          },
          "renewDeadline": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Date the domain must renew on"
          },
          "transferProtected": {
            "type": "boolean",
            "description": "Whether or not the domain is protected from transfer"
          },
          "createdAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Date and time when this domain was created"
          },
          "deletedAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Date and time when this domain was deleted"
          },
          "modifiedAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Date and time when this domain was last modified"
          },
          "transferAwayEligibleAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Date and time when this domain is eligible to transfer"
          },
          "authCode": {
            "type": "string",
            "description": "Authorization code for transferring the Domain"
          },
          "nameServers": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "host-name"
            },
            "description": "Fully-qualified domain names for DNS servers"
          },
          "hostnames": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "host-name"
            },
            "description": "Hostnames owned by the domain"
          },
          "renewal": {
            "$ref": "#/components/schemas/RenewalDetails"
          },
          "verifications": {
            "$ref": "#/components/schemas/VerificationsDomainV2"
          },
          "contacts": {
            "$ref": "#/components/schemas/DomainContactsV2"
          },
          "actions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Action"
            },
            "description": "List of current actions in progress for this domain"
          },
          "dnssecRecords": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DomainDnssec"
            },
            "description": "List of active DNSSEC records for this domain"
          },
          "registryStatusCodes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ADD_PERIOD",
                "AUTO_RENEW_PERIOD",
                "CLIENT_DELETE_PROHIBITED",
                "CLIENT_HOLD",
                "CLIENT_RENEW_PROHIBITED",
                "CLIENT_TRANSFER_PROHIBITED",
                "CLIENT_UPDATE_PROHIBITED",
                "INACTIVE",
                "OK",
                "PENDING_CREATE",
                "PENDING_DELETE",
                "PENDING_RENEW",
                "PENDING_RESTORE",
                "PENDING_TRANSFER",
                "PENDING_UPDATE",
                "REDEMPTION_PERIOD",
                "RENEW_PERIOD",
                "SERVER_DELETE_PROHIBITED",
                "SERVER_HOLD",
                "SERVER_RENEW_PROHIBITED",
                "SERVER_TRANSFER_PROHIBITED",
                "SERVER_UPDATE_PROHIBITED",
                "TRANSFER_PERIOD"
              ]
            },
            "description": "The current registry status codes of the domain\n\n- **ADD_PERIOD** — This grace period is provided after the initial registration of a domain name.\n- **AUTO_RENEW_PERIOD** — This grace period is provided after a domain name registration period expires and is extended (renewed) automatically by the registry.\n- **CLIENT_DELETE_PROHIBITED** — This status code tells your domain's registry to reject requests to delete the domain.\n- **CLIENT_HOLD** — This status code tells your domain's registry to not activate your domain in the DNS and as a consequence, it will not resolve.\n- **CLIENT_RENEW_PROHIBITED** — This status code tells your domain's registry to reject requests to renew your domain.\n- **CLIENT_TRANSFER_PROHIBITED** — This status code tells your domain's registry to reject requests to transfer the domain from your current registrar to another.\n- **CLIENT_UPDATE_PROHIBITED** — This status code tells your domain's registry to reject requests to update the domain.\n- **INACTIVE** — This status code indicates that delegation information (name servers) has not been associated with your domain.\n- **OK** — This is the standard status for a domain, meaning it has no pending operations or prohibitions.\n- **PENDING_CREATE** — This status code indicates that a request to create your domain has been received and is being processed.\n- **PENDING_DELETE** — This status code indicates that the domain is either in a redemption period if combined with either REDEMPTION_PERIOD or PENDING_RESTORE, if not combined with these, then indicates that the redemption period for the domain has ended and domain will be be purged and dropped from the registry database.\n- **PENDING_RENEW** — This status code indicates that a request to renew your domain has been received and is being processed.\n- **PENDING_RESTORE** — This status code indicates that your registrar has asked the registry to restore your domain that was in REDEMPTION_PERIOD status\n- **PENDING_TRANSFER** — This status code indicates that a request to transfer your domain to a new registrar has been received and is being processed.\n- **PENDING_UPDATE** — This status code indicates that a request to update your domain has been received and is being processed.\n- **REDEMPTION_PERIOD** — This status code indicates that your registrar has asked the registry to delete your domain.\n- **RENEW_PERIOD** — This grace period is provided after a domain name registration period is explicitly extended (renewed) by the registrar.\n- **SERVER_DELETE_PROHIBITED** — This status code prevents your domain from being deleted.\n- **SERVER_HOLD** — This status code is set by your domain's Registry Operator. Your domain is not activated in the DNS.\n- **SERVER_RENEW_PROHIBITED** — This status code indicates your domain's Registry Operator will not allow your registrar to renew your domain.\n- **SERVER_TRANSFER_PROHIBITED** — This status code prevents your domain from being transferred from your current registrar to another.\n- **SERVER_UPDATE_PROHIBITED** — This status code locks your domain preventing it from being updated.\n- **TRANSFER_PERIOD** — This grace period is provided after the successful transfer of a domain name from one registrar to another."
          }
        },
        "required": [
          "domainId",
          "domain",
          "status",
          "expirationProtected",
          "holdRegistrar",
          "locked",
          "privacy",
          "renewAuto",
          "renewDeadline",
          "transferProtected",
          "createdAt",
          "authCode",
          "nameServers",
          "contacts"
        ],
        "type": "object"
      },
      "DomainDnssec": {
        "properties": {
          "algorithm": {
            "description": "This identifies the cryptographic algorithm used to generate the signature\n\n- **RSAMD5** — [01] DRSA/MD5\n- **DSA** — [03] DSA/SHA1\n- **RSASHA1** — [05] RSA/SHA-1\n- **DSA_NSEC3_SHA1** — [06] DSA-NSEC3-SHA1\n- **RSASHA1_NSEC3_SHA1** — [07] RSASHA1-NSEC3-SHA1\n- **RSASHA256** — [08] RSA/SHA-256\n- **RSASHA512** — [10] RSA/SHA-512\n- **ECC_GOST** — [12] GOST R 34.10-2001\n- **ECDSAP256SHA256** — [13] ECDSA Curve P-256 with SHA-256\n- **ECDSAP384SHA384** — [14] ECDSA Curve P-384 with SHA-384\n- **ED25519** — [15] Ed25519\n- **ED448** — [16] Ed448",
            "enum": [
              "RSAMD5",
              "DH",
              "DSA",
              "RSASHA1",
              "DSA_NSEC3_SHA1",
              "RSASHA1_NSEC3_SHA1",
              "RSASHA256",
              "RSASHA512",
              "ECC_GOST",
              "ECDSAP256SHA256",
              "ECDSAP384SHA384",
              "ED25519",
              "ED448",
              "PRIVATEDNS",
              "PRIVATEOID"
            ],
            "type": "string"
          },
          "keyTag": {
            "description": "This is an integer value less than 65536 used to identify the DNSSEC record for the domain name.",
            "type": "integer",
            "format": "integer-positive",
            "maximum": 65536
          },
          "digestType": {
            "description": "This identifies the algorithm used to construct the digest\n\n- **SHA1** — [01] SHA-1\n- **SHA256** — [02] SHA-256\n- **GOST** — [03] GOST R 34.11-94\n- **SHA384** — [04] SHA-384",
            "enum": [
              "SHA1",
              "SHA256",
              "GOST",
              "SHA384"
            ],
            "type": "string"
          },
          "digest": {
            "type": "string",
            "description": "The digest is an alpha-numeric value"
          },
          "flags": {
            "description": "This identifies the key type; either a Zone-Signing Key or a Key-Signing Key\n\n- **ZSK** — [256] Zone-Signing Key\n- **KSK** — [257] Key-Signing Key",
            "enum": [
              "ZSK",
              "KSK"
            ],
            "type": "string"
          },
          "publicKey": {
            "type": "string",
            "description": "Registries use this value to encrypt DS records. Decryption requires a matching public key"
          },
          "maxSignatureLife": {
            "type": "integer",
            "format": "integer-positive",
            "description": "This specifies the validity period for the signature. The value is expressed in seconds. You can use any integer value larger than zero"
          }
        },
        "required": [
          "algorithm"
        ],
        "type": "object"
      },
      "DomainPrivacyForwarding": {
        "properties": {
          "privateEmail": {
            "type": "string",
            "description": "The private email"
          },
          "forwardingEmail": {
            "type": "string",
            "description": "The email that it forwards to"
          },
          "emailPreference": {
            "type": "string",
            "enum": [
              "EMAIL_FILTER",
              "EMAIL_SEND_ALL",
              "EMAIL_SEND_NONE"
            ],
            "description": "The email forwarding preference for the domain\n\n- **EMAIL_FILTER** — Filter for spam and forward email.\n- **EMAIL_SEND_ALL** — Forward all email.\n- **EMAIL_SEND_NONE** — Don't forward email."
          }
        },
        "type": "object"
      },
      "DomainPrivacyForwardingUpdate": {
        "properties": {
          "privateEmailType": {
            "type": "string",
            "enum": [
              "DEFAULT",
              "RANDOM"
            ],
            "description": "The private email type\n\n- **DEFAULT** — Use default email address (example: domainname.com@domainsbyproxy.com)\n- **RANDOM** — Randomize email address, we’ll create a private email address using random characters to further protect you from unwanted spam. (5f9e6c9368a64565bf2@domainsbyproxy.com)"
          },
          "forwardingEmail": {
            "type": "string",
            "description": "The email that it forwards to"
          },
          "emailPreference": {
            "type": "string",
            "enum": [
              "EMAIL_FILTER",
              "EMAIL_SEND_ALL",
              "EMAIL_SEND_NONE"
            ],
            "description": "The email forwarding preference for the domain\n\n- **EMAIL_FILTER** — Filter for spam and forward email.\n- **EMAIL_SEND_ALL** — Forward all email.\n- **EMAIL_SEND_NONE** — Don't forward email."
          }
        },
        "required": [
          "privateEmailType",
          "emailPreference"
        ],
        "type": "object"
      },
      "DomainNameServerUpdateV2": {
        "additionalProperties": false,
        "properties": {
          "nameServers": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Fully-qualified domain names for name servers to associate with the domain"
          }
        },
        "type": "object"
      },
      "DomainNotification": {
        "properties": {
          "notificationId": {
            "description": "The notification ID to be used in POST /v2/customers/{customerId}/domains/notifications to acknowledge the notification",
            "default": "",
            "type": "string"
          },
          "type": {
            "description": "The type of action the notification relates to",
            "enum": [
              "AUTH_CODE_REGENERATE",
              "AUTO_RENEWAL",
              "CHANGE_OF_REGISTRANT_DELETE",
              "DOMAIN_DELETE",
              "DOMAIN_UPDATE",
              "DOMAIN_UPDATE_NAME_SERVERS",
              "PRIVACY_FORWARDING_UPDATE",
              "REGISTER",
              "TRANSFER",
              "TRANSFER_IN",
              "TRANSFER_IN_ACCEPT",
              "TRANSFER_IN_CANCEL",
              "TRANSFER_IN_RESTART",
              "TRANSFER_IN_RETRY",
              "TRANSFER_OUT",
              "TRANSFER_OUT_ACCEPT",
              "TRANSFER_OUT_REJECT"
            ],
            "type": "string"
          },
          "resource": {
            "description": "The resource the notification pertains to.",
            "default": "",
            "type": "string"
          },
          "resourceType": {
            "description": "The type of resource the notification relates to",
            "enum": [
              "CONTACT",
              "DOMAIN",
              "HOST"
            ],
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "AWAITING",
              "CANCELLED",
              "FAILED",
              "PENDING",
              "SUCCESS"
            ],
            "description": "The resulting status of the action."
          },
          "addedAt": {
            "description": "The date the notification was added",
            "default": "",
            "type": "string",
            "format": "iso-datetime"
          },
          "requestId": {
            "type": "string",
            "description": "A client provided identifier (via X-Request-Id header) indicating the request this notification is for"
          },
          "metadata": {
            "description": "The notification data for the given type as specified by GET /v2/customers/{customerId}/domains/notifications/schema",
            "default": "",
            "type": "object"
          }
        },
        "required": [
          "notificationId",
          "type",
          "resource",
          "resourceType",
          "status",
          "addedAt"
        ],
        "type": "object"
      },
      "DomainNotificationType": {
        "properties": {
          "type": {
            "description": "The notification type",
            "enum": [
              "AUTH_CODE_REGENERATE",
              "AUTO_RENEWAL",
              "CHANGE_OF_REGISTRANT_DELETE",
              "DOMAIN_DELETE",
              "DOMAIN_UPDATE",
              "DOMAIN_UPDATE_NAME_SERVERS",
              "PRIVACY_FORWARDING_UPDATE",
              "REGISTER",
              "TRANSFER",
              "TRANSFER_IN",
              "TRANSFER_IN_ACCEPT",
              "TRANSFER_IN_CANCEL",
              "TRANSFER_IN_RESTART",
              "TRANSFER_IN_RETRY",
              "TRANSFER_OUT",
              "TRANSFER_OUT_ACCEPT",
              "TRANSFER_OUT_REJECT"
            ],
            "type": "string"
          }
        },
        "required": [
          "type"
        ],
        "type": "object"
      },
      "DomainPurchase": {
        "properties": {
          "consent": {
            "$ref": "#/components/schemas/Consent"
          },
          "contactAdmin": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactBilling": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactRegistrant": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactTech": {
            "$ref": "#/components/schemas/Contact"
          },
          "domain": {
            "description": "For internationalized domain names with non-ascii characters, the domain name is converted to punycode before format and pattern validation rules are checked",
            "format": "domain",
            "type": "string"
          },
          "nameServers": {
            "items": {
              "format": "host-name",
              "type": "string"
            },
            "type": "array"
          },
          "period": {
            "default": 1,
            "format": "integer-positive",
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          },
          "privacy": {
            "default": false,
            "type": "boolean"
          },
          "renewAuto": {
            "default": true,
            "type": "boolean"
          }
        },
        "required": [
          "domain",
          "consent"
        ],
        "type": "object"
      },
      "DomainPurchaseV2": {
        "additionalProperties": false,
        "properties": {
          "domain": {
            "type": "string",
            "format": "domain",
            "pattern": "^[^.]{1,63}.[^.]{2,}$",
            "description": "For internationalized domain names with non-ascii characters, the domain name is converted to punycode before format and pattern validation rules are checked"
          },
          "consent": {
            "$ref": "#/components/schemas/ConsentV2"
          },
          "period": {
            "type": "integer",
            "format": "integer-positive",
            "default": 1,
            "minimum": 1,
            "maximum": 10,
            "pattern": "^[0-9]+$"
          },
          "nameServers": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "host-name"
            },
            "maxItems": 2
          },
          "renewAuto": {
            "type": "boolean",
            "default": true
          },
          "privacy": {
            "type": "boolean",
            "default": false
          },
          "contacts": {
            "$ref": "#/components/schemas/DomainContactsCreateV2"
          },
          "metadata": {
            "type": "object",
            "description": "The domain eligibility data fields as specified by GET /v2/customers/{customerId}/domains/register/schema/{tld}"
          }
        },
        "required": [
          "domain",
          "consent"
        ],
        "type": "object"
      },
      "DomainPurchaseResponse": {
        "properties": {
          "currency": {
            "default": "USD",
            "description": "Currency in which the `total` is listed",
            "format": "iso-currency-code",
            "type": "string"
          },
          "itemCount": {
            "description": "Number items included in the order",
            "format": "integer-positive",
            "type": "integer"
          },
          "orderId": {
            "description": "Unique identifier of the order processed to purchase the domain",
            "format": "integer-positive",
            "type": "integer"
          },
          "total": {
            "description": "Total cost of the domain and any selected add-ons",
            "format": "currency-micro-unit",
            "type": "integer"
          }
        },
        "required": [
          "orderId",
          "itemCount",
          "total"
        ],
        "type": "object"
      },
      "DomainRenew": {
        "properties": {
          "period": {
            "description": "Number of years to extend the Domain. Must not exceed maximum for TLD. When omitted, defaults to `period` specified during original purchase",
            "format": "integer-positive",
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "DomainRenewV2": {
        "additionalProperties": false,
        "properties": {
          "expires": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Current date when this domain will expire"
          },
          "consent": {
            "$ref": "#/components/schemas/ConsentRenew"
          },
          "period": {
            "type": "integer",
            "description": "Number of years to extend the Domain. Must not exceed maximum for TLD. When omitted, defaults to `period` specified during original purchase",
            "format": "integer-positive",
            "minimum": 1,
            "maximum": 10,
            "pattern": "^[0-9]+$"
          }
        },
        "required": [
          "consent",
          "expires"
        ],
        "type": "object"
      },
      "DomainSuggestion": {
        "properties": {
          "domain": {
            "description": "Suggested domain name",
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "DomainTransferAuthCode": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "authCode": {
            "description": "Authorization code for transferring the Domain",
            "type": "string"
          }
        },
        "required": [
          "authCode"
        ]
      },
      "DomainTransferStatus": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "transferStatusCodes": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "CLIENT_APPROVED",
                "CLIENT_CANCELLED",
                "CLIENT_REJECTED",
                "PENDING",
                "SERVER_APPROVED",
                "SERVER_CANCELLED"
              ]
            },
            "description": "The current registry transfer status codes of the domain\n\n- **CLIENT_APPROVED** — The losing registrar approved the transfer.\n- **CLIENT_CANCELLED** — The gaining registrar cancelled the transfer.\n- **CLIENT_REJECTED** — The losing registrar rejected the transfer.\n- **PENDING** — The transfer is pending at the registry.\n- **SERVER_APPROVED** — The registry approved the transfer, auto-approve.\n- **SERVER_CANCELLED** — The registry cancelled the transfer."
          }
        },
        "required": [
          "transferStatusCodes"
        ]
      },
      "DomainSummary": {
        "properties": {
          "authCode": {
            "description": "Authorization code for transferring the Domain",
            "type": "string"
          },
          "contactAdmin": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactBilling": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactRegistrant": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactTech": {
            "$ref": "#/components/schemas/Contact"
          },
          "createdAt": {
            "description": "Date and time when this domain was created",
            "format": "date-time",
            "type": "string"
          },
          "deletedAt": {
            "description": "Date and time when this domain was deleted",
            "format": "date-time",
            "type": "string"
          },
          "transferAwayEligibleAt": {
            "description": "Date and time when this domain is eligible to transfer",
            "format": "date-time",
            "type": "string"
          },
          "domain": {
            "description": "Name of the domain",
            "type": "string"
          },
          "domainId": {
            "description": "Unique identifier for this Domain",
            "format": "double",
            "type": "number"
          },
          "expirationProtected": {
            "description": "Whether or not the domain is protected from expiration",
            "type": "boolean"
          },
          "expires": {
            "description": "Date and time when this domain will expire",
            "format": "date-time",
            "type": "string"
          },
          "exposeWhois": {
            "description": "Whether or not the domain contact details should be shown in the WHOIS",
            "type": "boolean"
          },
          "holdRegistrar": {
            "description": "Whether or not the domain is on-hold by the registrar",
            "type": "boolean"
          },
          "locked": {
            "description": "Whether or not the domain is locked to prevent transfers",
            "type": "boolean"
          },
          "nameServers": {
            "description": "Fully-qualified domain names for DNS servers",
            "items": {
              "format": "host-name",
              "type": "string"
            },
            "type": "array"
          },
          "privacy": {
            "description": "Whether or not the domain has privacy protection",
            "type": "boolean"
          },
          "registrarCreatedAt": {
            "type": "string",
            "format": "iso-datetime",
            "description": "Date and time when this domain was created by the registrar"
          },
          "renewAuto": {
            "description": "Whether or not the domain is configured to automatically renew",
            "type": "boolean"
          },
          "renewDeadline": {
            "description": "Date the domain must renew on",
            "format": "date-time",
            "type": "string"
          },
          "renewable": {
            "description": "Whether or not the domain is eligble for renewal based on status",
            "type": "boolean"
          },
          "status": {
            "description": "Processing status of the domain\n\n- **ACTIVE** — All is well\n- **AWAITING*** — System is waiting for the end-user to complete an action\n- **CANCELLED*** — Domain has been cancelled, and may or may not be reclaimable\n- **CONFISCATED** — Domain has been confiscated, usually for abuse, chargeback, or fraud\n- **DISABLED*** — Domain has been disabled\n- **EXCLUDED*** — Domain has been excluded from Firehose registration\n- **EXPIRED*** — Domain has expired\n- **FAILED*** — Domain has failed a required action, and the system is no longer retrying\n- **HELD*** — Domain has been placed on hold, and likely requires intervention from Support\n- **LOCKED*** — Domain has been locked, and likely requires intervention from Support\n- **PARKED*** — Domain has been parked, and likely requires intervention from Support\n- **PENDING*** — Domain is working its way through an automated workflow\n- **RESERVED*** — Domain is reserved, and likely requires intervention from Support\n- **REVERTED** — Domain has been reverted, and likely requires intervention from Support\n- **SUSPENDED*** — Domain has been suspended, and likely requires intervention from Support\n- **TRANSFERRED*** — Domain has been transferred out\n- **UNKNOWN** — Domain is in an unknown state\n- **UNLOCKED*** — Domain has been unlocked, and likely requires intervention from Support\n- **UNPARKED*** — Domain has been unparked, and likely requires intervention from Support\n- **UPDATED*** — Domain ownership has been transferred to another account",
            "type": "string"
          },
          "transferProtected": {
            "description": "Whether or not the domain is protected from transfer",
            "type": "boolean"
          }
        },
        "required": [
          "domainId",
          "domain",
          "status",
          "expirationProtected",
          "holdRegistrar",
          "locked",
          "privacy",
          "renewAuto",
          "renewDeadline",
          "transferProtected",
          "createdAt",
          "contactRegistrant"
        ],
        "type": "object"
      },
      "DomainForwardingMask": {
        "properties": {
          "title": {
            "type": "string",
            "description": "Displays at the top of the browser window and in search results."
          },
          "description": {
            "type": "string",
            "description": "A short description of your website to display in search engine results."
          },
          "keywords": {
            "type": "string",
            "description": "A list of comma-separated keywords that describes the content and purpose of your website."
          }
        },
        "type": "object"
      },
      "DomainForwardingCreate": {
        "properties": {
          "type": {
            "type": "string",
            "default": "REDIRECT_PERMANENT",
            "enum": [
              "MASKED",
              "REDIRECT_PERMANENT",
              "REDIRECT_TEMPORARY"
            ],
            "description": "The type of forwarding to implement\n\n- **MASKED** — Prevents the forwarded domain or subdomain URL from displaying in the browser's address bar.\n- **REDIRECT_PERMANENT** (default) — Redirects to the url specified in the forwardTo field using a `301 Moved Permanently` HTTP response. Tells user-agents (including search engines) that the location has permanently moved.\n- **REDIRECT_TEMPORARY** — Redirects to the url specified in the forwardTo field using a `302 Found` HTTP response. Tells user-agents (including search engines) that the location has temporarily moved."
          },
          "url": {
            "type": "string",
            "format": "url",
            "description": "Forwards http(s) traffic to this destination url (ex. http://www.somedomain.com/)"
          },
          "mask": {
            "$ref": "#/components/schemas/DomainForwardingMask"
          }
        },
        "required": [
          "type",
          "url"
        ],
        "type": "object"
      },
      "DomainForwarding": {
        "properties": {
          "fqdn": {
            "type": "string",
            "description": "The fqdn (domain or sub domain) to forward (ex somedomain.com or sub.somedomain.com)"
          },
          "type": {
            "type": "string",
            "default": "REDIRECT_PERMANENT",
            "enum": [
              "MASKED",
              "REDIRECT_PERMANENT",
              "REDIRECT_TEMPORARY"
            ],
            "description": "The type of forwarding to implement\n\n- **MASKED** — Prevents the forwarded domain or subdomain URL from displaying in the browser's address bar.\n- **REDIRECT_PERMANENT** (default) — Redirects to the url specified in the forwardTo field using a `301 Moved Permanently` HTTP response. Tells user-agents (including search engines) that the location has permanently moved.\n- **REDIRECT_TEMPORARY** — Redirects to the url specified in the forwardTo field using a `302 Found` HTTP response. Tells user-agents (including search engines) that the location has temporarily moved."
          },
          "url": {
            "type": "string",
            "format": "url",
            "description": "Forwards http(s) traffic to this destination url (ex. http://www.somedomain.com/)"
          },
          "mask": {
            "$ref": "#/components/schemas/DomainForwardingMask"
          }
        },
        "required": [
          "fqdn",
          "type",
          "url"
        ],
        "type": "object"
      },
      "DomainRedeemV2": {
        "additionalProperties": false,
        "properties": {
          "consent": {
            "$ref": "#/components/schemas/ConsentRedemption"
          }
        },
        "required": [
          "consent"
        ],
        "type": "object"
      },
      "DomainTransferIn": {
        "properties": {
          "authCode": {
            "description": "Authorization code from registrar for transferring a domain",
            "type": "string"
          },
          "consent": {
            "$ref": "#/components/schemas/Consent"
          },
          "period": {
            "default": 1,
            "description": "Can be more than 1 but no more than 10 years total including current registration length",
            "format": "integer-positive",
            "maximum": 10,
            "minimum": 1,
            "type": "integer"
          },
          "privacy": {
            "default": false,
            "description": "Whether or not privacy has been requested",
            "type": "boolean"
          },
          "renewAuto": {
            "default": true,
            "description": "Whether or not the domain should be configured to automatically renew",
            "type": "boolean"
          },
          "contactAdmin": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactBilling": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactRegistrant": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactTech": {
            "$ref": "#/components/schemas/Contact"
          }
        },
        "required": [
          "authCode",
          "consent"
        ],
        "type": "object"
      },
      "DomainTransferInV2": {
        "additionalProperties": false,
        "properties": {
          "authCode": {
            "type": "string",
            "description": "Authorization code from registrar for transferring a domain"
          },
          "period": {
            "type": "integer",
            "format": "integer-positive",
            "default": 1,
            "minimum": 1,
            "maximum": 10,
            "pattern": "^[0-9]+$",
            "description": "Can be more than 1 but no more than 10 years total including current registration length"
          },
          "renewAuto": {
            "type": "boolean",
            "default": true,
            "description": "Whether or not the domain should be configured to automatically renew"
          },
          "privacy": {
            "type": "boolean",
            "default": false,
            "description": "Whether or not privacy has been requested"
          },
          "identityDocumentId": {
            "type": "string",
            "description": "Unique identifier of the identify document that the user wants to associate with the domain being transferred in. This is required only if the gaining registry has a requirement for an approved identity document"
          },
          "consent": {
            "$ref": "#/components/schemas/ConsentV2"
          },
          "contacts": {
            "$ref": "#/components/schemas/DomainContactsCreateV2"
          },
          "metadata": {
            "type": "object",
            "description": "The domain eligibility data fields as specified by GET /v2/customers/{customerId}/domains/register/schema/{tld}"
          }
        },
        "required": [
          "authCode",
          "consent"
        ],
        "type": "object"
      },
      "DomainUpdate": {
        "properties": {
          "locked": {
            "description": "Whether or not the domain should be locked to prevent transfers",
            "type": "boolean"
          },
          "nameServers": {
            "description": "Fully-qualified domain names for Name Servers to associate with the domain",
            "items": {
              "format": "host-name"
            },
            "type": "array"
          },
          "renewAuto": {
            "description": "Whether or not the domain should be configured to automatically renew",
            "type": "boolean"
          },
          "subaccountId": {
            "description": "Reseller subaccount shopperid who can manage the domain",
            "type": "string"
          },
          "exposeRegistrantOrganization": {
            "type": "boolean",
            "description": "Whether or not the domain registrant contact organization field should be shown in the WHOIS"
          },
          "exposeWhois": {
            "description": "Whether or not the domain contact details should be shown in the WHOIS",
            "type": "boolean"
          },
          "consent": {
            "$ref": "#/components/schemas/ConsentDomainUpdate"
          }
        },
        "type": "object"
      },
      "DomainsContactsBulk": {
        "properties": {
          "contactAdmin": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactBilling": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactPresence": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactRegistrant": {
            "$ref": "#/components/schemas/Contact"
          },
          "contactTech": {
            "$ref": "#/components/schemas/Contact"
          },
          "domains": {
            "description": "An array of domain names to be validated against. Alternatively, you can specify the extracted tlds. However, full domain names are required if the tld is `uk`",
            "items": {
              "format": "domain",
              "type": "string"
            },
            "type": "array"
          },
          "entityType": {
            "description": "Canadian Presence Requirement (CA)",
            "enum": [
              "ABORIGINAL",
              "ASSOCIATION",
              "CITIZEN",
              "CORPORATION",
              "EDUCATIONAL",
              "GOVERNMENT",
              "HOSPITAL",
              "INDIAN_BAND",
              "LEGAL_REPRESENTATIVE",
              "LIBRARY_ARCHIVE_MUSEUM",
              "MARK_REGISTERED",
              "MARK_TRADE",
              "PARTNERSHIP",
              "POLITICAL_PARTY",
              "RESIDENT_PERMANENT",
              "TRUST",
              "UNION"
            ],
            "type": "string"
          }
        },
        "required": [
          "domains"
        ],
        "type": "object"
      },
      "Error": {
        "properties": {
          "code": {
            "description": "Short identifier for the error, suitable for indicating the specific error within client code",
            "format": "constant",
            "type": "string"
          },
          "fields": {
            "description": "List of the specific fields, and the errors found with their contents",
            "items": {
              "$ref": "#/components/schemas/ErrorField"
            },
            "type": "array"
          },
          "message": {
            "description": "Human-readable, English description of the error",
            "type": "string"
          }
        },
        "required": [
          "code"
        ],
        "type": "object"
      },
      "ErrorDomainContactsValidate": {
        "properties": {
          "code": {
            "description": "Short identifier for the error, suitable for indicating the specific error within client code",
            "format": "constant",
            "type": "string"
          },
          "fields": {
            "description": "List of the specific fields, and the errors found with their contents",
            "items": {
              "$ref": "#/components/schemas/ErrorFieldDomainContactsValidate"
            },
            "type": "array"
          },
          "message": {
            "description": "Human-readable, English description of the error",
            "type": "string"
          },
          "stack": {
            "description": "Stack trace indicating where the error occurred. NOTE: This attribute MAY be included for Development and Test environments. However, it MUST NOT be exposed from OTE nor Production systems.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "code"
        ],
        "type": "object"
      },
      "ErrorField": {
        "properties": {
          "code": {
            "description": "Short identifier for the error, suitable for indicating the specific error within client code",
            "format": "constant",
            "type": "string"
          },
          "message": {
            "description": "Human-readable, English description of the problem with the contents of the field",
            "type": "string"
          },
          "path": {
            "description": "JSONPath referring to a field containing an error, or a field that refers to an\nobject containing an error (with more detail in `pathRelated`).",
            "format": "json-path",
            "type": "string"
          },
          "pathRelated": {
            "description": "JSONPath referring to a field containing an error, which is referenced by `path`",
            "format": "json-path",
            "type": "string"
          }
        },
        "required": [
          "path",
          "code"
        ],
        "type": "object"
      },
      "ErrorFieldDomainContactsValidate": {
        "properties": {
          "code": {
            "description": "Short identifier for the error, suitable for indicating the specific error within client code",
            "format": "constant",
            "type": "string"
          },
          "domains": {
            "description": "An array of domain names the error is for. If tlds are specified in the request, `domains` will contain tlds. For example, if `domains` in request is [\"test1.com\", \"test2.uk\", \"net\"], and the field is invalid for com and net, then one of the `fields` in response will have [\"test1.com\", \"net\"] as `domains`",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "message": {
            "description": "Human-readable, English description of the problem with the contents of the field",
            "type": "string"
          },
          "path": {
            "description": "JSONPath referring to the field within the data containing an error, or an object containing an error.",
            "format": "json-path",
            "type": "string"
          },
          "pathRelated": {
            "description": "JSONPath referring to the field on the object referenced by `path` containing an error",
            "format": "json-path",
            "type": "string"
          }
        },
        "required": [
          "code",
          "domains",
          "path"
        ],
        "type": "object"
      },
      "ErrorLimit": {
        "properties": {
          "code": {
            "description": "Short identifier for the error, suitable for indicating the specific error within client code",
            "format": "constant",
            "type": "string"
          },
          "fields": {
            "description": "List of the specific fields, and the errors found with their contents",
            "items": {
              "$ref": "#/components/schemas/ErrorField"
            },
            "type": "array"
          },
          "message": {
            "description": "Human-readable, English description of the error",
            "type": "string"
          },
          "retryAfterSec": {
            "description": "Number of seconds to wait before attempting a similar request",
            "format": "integer-positive",
            "type": "integer"
          }
        },
        "required": [
          "retryAfterSec",
          "code"
        ],
        "type": "object"
      },
      "JsonDataType": {
        "properties": {
          "format": {
            "type": "string"
          },
          "pattern": {
            "type": "string"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "$ref"
        ],
        "type": "object"
      },
      "JsonProperty": {
        "properties": {
          "defaultValue": {
            "type": "string"
          },
          "format": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonDataType"
            }
          },
          "maxItems": {
            "type": "integer"
          },
          "maximum": {
            "type": "integer"
          },
          "minItems": {
            "type": "integer"
          },
          "minimum": {
            "type": "integer"
          },
          "pattern": {
            "type": "string"
          },
          "required": {
            "type": "boolean"
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "type",
          "required"
        ],
        "type": "object"
      },
      "JsonSchema": {
        "properties": {
          "id": {
            "type": "string"
          },
          "models": {
            "type": "array",
            "items": {
              "type": "object",
              "description": "Nested schema model"
            }
          },
          "properties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JsonProperty"
            }
          },
          "required": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "type": "object"
        },
        "required": [
          "id",
          "properties",
          "required",
          "models"
        ],
        "type": "object"
      },
      "LegalAgreement": {
        "properties": {
          "agreementKey": {
            "description": "Unique identifier for the legal agreement",
            "type": "string"
          },
          "content": {
            "description": "Contents of the legal agreement, suitable for embedding",
            "type": "string"
          },
          "title": {
            "description": "Title of the legal agreement",
            "type": "string"
          },
          "url": {
            "description": "URL to a page containing the legal agreement",
            "format": "url",
            "type": "string"
          }
        },
        "required": [
          "agreementKey",
          "title",
          "content"
        ],
        "type": "object"
      },
      "PrivacyPurchase": {
        "properties": {
          "consent": {
            "$ref": "#/components/schemas/Consent"
          }
        },
        "required": [
          "consent"
        ],
        "type": "object"
      },
      "RealNameValidation": {
        "properties": {
          "status": {
            "enum": [
              "APPROVED",
              "PENDING",
              "PENDING_ASSOCIATION_WITH_DOMAIN",
              "PENDING_SUBMISSION_TO_VERIFICATION_SERVICE",
              "PENDING_VERIFICATION_SERVICE_REPLY",
              "PENDING_SUBMISSION_TO_REGISTRY",
              "PENDING_REGISTRY_REPLY",
              "PENDING_DOMAIN_UPDATE",
              "REJECTED"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "RenewalDetails": {
        "properties": {
          "renewable": {
            "type": "boolean",
            "description": "Whether or not the domain is eligble for renewal based on status"
          },
          "price": {
            "type": "integer",
            "format": "currency-micro-unit",
            "description": "Price for the domain renewal excluding taxes or fees"
          },
          "currency": {
            "type": "string",
            "format": "iso-currency-code",
            "default": "USD",
            "pattern": "^[A-Z][A-Z][A-Z]$",
            "description": "Currency in which the `price` is listed"
          }
        },
        "required": [
          "price",
          "currency"
        ],
        "type": "object"
      },
      "TldSummary": {
        "properties": {
          "name": {
            "description": "Name of the top-level domain",
            "format": "tld",
            "type": "string"
          },
          "type": {
            "default": "GENERIC",
            "description": "Type of the top-level domain",
            "enum": [
              "COUNTRY_CODE",
              "GENERIC"
            ],
            "type": "string"
          }
        },
        "required": [
          "name",
          "type"
        ],
        "type": "object"
      },
      "UsageMonthly": {
        "additionalProperties": false,
        "properties": {
          "details": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/UsageMonthlyDetail"
            },
            "description": "List of total request counts per endpoint."
          },
          "quota": {
            "type": "integer",
            "description": "The total number of allowed requests in the month.  See https://developer.godaddy.com/getstarted for more information on api quotas and access limits."
          },
          "total": {
            "type": "integer",
            "description": "The total number of requests in the month."
          },
          "yyyymm": {
            "type": "string",
            "description": "The year/month timeframe for the request counts (in the format yyyy-mm)"
          }
        },
        "required": [
          "total",
          "yyyymm"
        ],
        "type": "object"
      },
      "UsageMonthlyDetail": {
        "additionalProperties": false,
        "properties": {
          "path": {
            "type": "string",
            "description": "The api path for the requests"
          },
          "total": {
            "type": "integer",
            "description": "The total number of requests in the month for the request path."
          }
        },
        "required": [
          "path",
          "total"
        ],
        "type": "object"
      },
      "VerificationDomainName": {
        "properties": {
          "status": {
            "description": "Status of the domain name verification",
            "enum": [
              "APPROVED",
              "PENDING",
              "REJECTED",
              "UNABLE_TO_RETRIEVE_STATUS"
            ],
            "type": "string"
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "VerificationRealName": {
        "properties": {
          "status": {
            "description": "Status of the real name verification\n\n- **APPROVED** — All is well\n- **PENDING** — Real name verification is working its way through the workflow\n- **REJECTED_DOCUMENT_OUTDATED** — Local government verification shows there is a newer version of your document.  Upload the latest version of the document and retry real name verification\n- **REJECTED_EXPIRED_BUSINESS_LICENSE** — Business license is expired\n- **REJECTED_EXPIRED_ORGANIZATION_CODE** — Organization code certificate number has expired\n- **REJECTED_ILLEGIBLE_DOCUMENT_NAME** — There isn’t a clear name on your uploaded document, please upload a different document to retry real name verification\n- **REJECTED_ILLEGIBLE_IDENTIFICATION** — Registrant identification is not clear.  Upload a better image to retry\n- **REJECTED_INCOMPLETE_IDENTIFICATION** — Registrant identification is incomplete\n- **REJECTED_INCOMPLETE_REGISTRATION_LETTER** — Registration letter is incomplete\n- **REJECTED_INCONSISTENT_IDENTITY_CARD** — Provided identity card is inconsistent with the identity card on record\n- **REJECTED_INCONSISTENT_ORGANIZATION_CODE** — Provided organization information is inconsistent with the results obtained using the submitted organization code\n- **REJECTED_INCONSISTENT_REGISTRANT_NAME** — Name on the registrant identification does not match the name in the system\n- **REJECTED_INVALID_BUSINESS_LICENSE_OR_ORGANIZATION_CODE** — Your document contains an invalid business license or organization code certificate number\n- **REJECTED_INVALID_DOCUMENT** — Document is invalid.  Please upload another document to retry real name verification\n- **REJECTED_MISMATCH_BUSINESS_ID** — Business id does not match the business id in the document\n- **REJECTED_MISMATCH_BUSINESS_NAME** — Business name does not match the business name in the document\n- **REJECTED_MISMATCH_DOCUMENT_ID** — Document id does not match the id in the document\n- **REJECTED_MISMATCH_DOCUMENT_NAME** — Document name does not match the name in the document\n- **REJECTED_MISMATCH_DOCUMENT_TYPE** — Document type does not match the document\n- **REJECTED_MISMATCH_REGISTRANT_INFO** — The information provided for the registrant does not match the document\n- **REJECTED_MISMATCH_REGISTRANT_LOCALITY** — Registrant region is overseas, but a local identity document was provided\n- **REJECTED_MISMATCH_REGISTRANT_NAME** — Registrant name has been changed, so the request must be resubmitted\n- **REJECTED_UNABLE_TO_OPEN** — Registrant identification could not be opened.  Please upload the document again to retry real name verification\n- **REJECTED_UNABLE_TO_VERIFY** — Unable to initiate verification.  Please upload the document again to retry real name verification\n- **REJECTED_UNKNOWN_ERROR** — Document was rejected due to an unknown error. For more information, contact customer support\n- **UNABLE_TO_RETRIEVE_STATUS** — Unable to retrieve status for the real name verification process.  Retry, if this status persists, contact customer support",
            "enum": [
              "APPROVED",
              "PENDING",
              "REJECTED_DOCUMENT_OUTDATED",
              "REJECTED_EXPIRED_BUSINESS_LICENSE",
              "REJECTED_EXPIRED_ORGANIZATION_CODE",
              "REJECTED_ILLEGIBLE_DOCUMENT_NAME",
              "REJECTED_ILLEGIBLE_IDENTIFICATION",
              "REJECTED_INCOMPLETE_IDENTIFICATION",
              "REJECTED_INCOMPLETE_REGISTRATION_LETTER",
              "REJECTED_INCONSISTENT_IDENTITY_CARD",
              "REJECTED_INCONSISTENT_ORGANIZATION_CODE",
              "REJECTED_INCONSISTENT_REGISTRANT_NAME",
              "REJECTED_INVALID_BUSINESS_LICENSE_OR_ORGANIZATION_CODE",
              "REJECTED_INVALID_DOCUMENT",
              "REJECTED_MISMATCH_BUSINESS_ID",
              "REJECTED_MISMATCH_BUSINESS_NAME",
              "REJECTED_MISMATCH_DOCUMENT_ID",
              "REJECTED_MISMATCH_DOCUMENT_NAME",
              "REJECTED_MISMATCH_DOCUMENT_TYPE",
              "REJECTED_MISMATCH_REGISTRANT_INFO",
              "REJECTED_MISMATCH_REGISTRANT_LOCALITY",
              "REJECTED_MISMATCH_REGISTRANT_NAME",
              "REJECTED_UNABLE_TO_OPEN",
              "REJECTED_UNABLE_TO_VERIFY",
              "REJECTED_UNKNOWN_ERROR",
              "UNABLE_TO_RETRIEVE_STATUS"
            ],
            "type": "string"
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "VerificationsDomain": {
        "properties": {
          "domainName": {
            "$ref": "#/components/schemas/VerificationDomainName"
          },
          "realName": {
            "$ref": "#/components/schemas/VerificationRealName"
          }
        },
        "type": "object"
      },
      "VerificationsDomainV2": {
        "additionalProperties": false,
        "properties": {
          "icann": {
            "type": "string",
            "enum": [
              "COMPLETED",
              "PENDING",
              "UNABLE_TO_RETRIEVE_STATUS"
            ],
            "description": "Status of the ICANN verification of domain registrant contact by completing email and/or phone verification\n\n- **COMPLETED** — ICANN verification has been completed.\n- **PENDING** — ICANN verification has not been completed.\n- **UNABLE_TO_RETRIEVE_STATUS** — ICANN verification not supported for specified TLD."
          },
          "realName": {
            "type": "string",
            "enum": [
              "APPROVED",
              "PENDING",
              "REJECTED_DOCUMENT_OUTDATED",
              "REJECTED_EXPIRED_BUSINESS_LICENSE",
              "REJECTED_EXPIRED_ORGANIZATION_CODE",
              "REJECTED_ILLEGIBLE_DOCUMENT_NAME",
              "REJECTED_ILLEGIBLE_IDENTIFICATION",
              "REJECTED_INCOMPLETE_IDENTIFICATION",
              "REJECTED_INCOMPLETE_REGISTRATION_LETTER",
              "REJECTED_INCONSISTENT_IDENTITY_CARD",
              "REJECTED_INCONSISTENT_ORGANIZATION_CODE",
              "REJECTED_INCONSISTENT_REGISTRANT_NAME",
              "REJECTED_INVALID_BUSINESS_LICENSE_OR_ORGANIZATION_CODE",
              "REJECTED_INVALID_DOCUMENT",
              "REJECTED_MISMATCH_BUSINESS_ID",
              "REJECTED_MISMATCH_BUSINESS_NAME",
              "REJECTED_MISMATCH_DOCUMENT_ID",
              "REJECTED_MISMATCH_DOCUMENT_NAME",
              "REJECTED_MISMATCH_DOCUMENT_TYPE",
              "REJECTED_MISMATCH_REGISTRANT_INFO",
              "REJECTED_MISMATCH_REGISTRANT_LOCALITY",
              "REJECTED_MISMATCH_REGISTRANT_NAME",
              "REJECTED_UNABLE_TO_OPEN",
              "REJECTED_UNABLE_TO_VERIFY",
              "REJECTED_UNKNOWN_ERROR",
              "UNABLE_TO_RETRIEVE_STATUS"
            ],
            "description": "Status of the real name verification of an identity by comparing registration data against government issued documents\n\n- **APPROVED** — All is well\n- **PENDING** — Real name verification is working its way through the workflow\n- **REJECTED_DOCUMENT_OUTDATED** — Local government verification shows there is a newer version of your document.  Upload the latest version of the document and retry real name verification\n- **REJECTED_EXPIRED_BUSINESS_LICENSE** — Business license is expired\n- **REJECTED_EXPIRED_ORGANIZATION_CODE** — Organization code certificate number has expired\n- **REJECTED_ILLEGIBLE_DOCUMENT_NAME** — There isn’t a clear name on your uploaded document, please upload a different document to retry real name verification\n- **REJECTED_ILLEGIBLE_IDENTIFICATION** — Registrant identification is not clear.  Upload a better image to retry\n- **REJECTED_INCOMPLETE_IDENTIFICATION** — Registrant identification is incomplete\n- **REJECTED_INCOMPLETE_REGISTRATION_LETTER** — Registration letter is incomplete\n- **REJECTED_INCONSISTENT_IDENTITY_CARD** — Provided identity card is inconsistent with the identity card on record\n- **REJECTED_INCONSISTENT_ORGANIZATION_CODE** — Provided organization information is inconsistent with the results obtained using the submitted organization code\n- **REJECTED_INCONSISTENT_REGISTRANT_NAME** — Name on the registrant identification does not match the name in the system\n- **REJECTED_INVALID_BUSINESS_LICENSE_OR_ORGANIZATION_CODE** — Your document contains an invalid business license or organization code certificate number\n- **REJECTED_INVALID_DOCUMENT** — Document is invalid.  Please upload another document to retry real name verification\n- **REJECTED_MISMATCH_BUSINESS_ID** — Business id does not match the business id in the document\n- **REJECTED_MISMATCH_BUSINESS_NAME** — Business name does not match the business name in the document\n- **REJECTED_MISMATCH_DOCUMENT_ID** — Document id does not match the id in the document\n- **REJECTED_MISMATCH_DOCUMENT_NAME** — Document name does not match the name in the document\n- **REJECTED_MISMATCH_DOCUMENT_TYPE** — Document type does not match the document\n- **REJECTED_MISMATCH_REGISTRANT_INFO** — The information provided for the registrant does not match the document\n- **REJECTED_MISMATCH_REGISTRANT_LOCALITY** — Registrant region is overseas, but a local identity document was provided\n- **REJECTED_MISMATCH_REGISTRANT_NAME** — Registrant name has been changed, so the request must be resubmitted\n- **REJECTED_UNABLE_TO_OPEN** — Registrant identification could not be opened.  Please upload the document again to retry real name verification\n- **REJECTED_UNABLE_TO_VERIFY** — Unable to initiate verification.  Please upload the document again to retry real name verification\n- **REJECTED_UNKNOWN_ERROR** — Document was rejected due to an unknown error. For more information, contact customer support\n- **UNABLE_TO_RETRIEVE_STATUS** — Unable to retrieve status for the real name verification process.  Retry, if this status persists, contact customer support"
          },
          "domainName": {
            "type": "string",
            "enum": [
              "APPROVED",
              "PENDING",
              "REJECTED",
              "UNABLE_TO_RETRIEVE_STATUS"
            ],
            "description": "Status of the verification of the domain name against a prohibited list maintained by the government"
          }
        },
        "type": "object"
      },
      "domain": {
        "properties": {
          "id": {
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      }
    }
  },
  "x-ext-urls": {}
}
