{
  "swagger": "2.0",
  "info": {
    "title": "GoDaddy",
    "version": "2",
    "description": "<strong>GoDaddy Abuse API Terms of Use:</strong><p>GoDaddy’s Abuse API is provided to simplify and standardize the abuse reporting experience. To help us streamline the review of abuse reports, you acknowledge and agree that your use of GoDaddy’s Abuse API is subject to the following quality metrics and terms of use.</p><p>GoDaddy may, in its sole and absolute discretion, change or modify these terms, and such changes or modifications shall be effective immediately upon notice to you. Your use of GoDaddy’s Abuse API after such changes or modifications shall constitute your acceptance of these terms as last revised. If you do not agree to be bound by these terms as last revised, do not use (or continue to use) our Abuse API.</p><p>As an Abuse API user, you must only submit abuse reports via the API portal and cease all email submissions, including but not limited, to phishing@godaddy.com, netabuse@godaddy.com, malware@godaddy.com, or spam@godaddy.com, etc.  Any additional or duplicate submission outside of the API portal will be deprioritized for review. Submissions related to trademark, copyright or content issues may still be sent to trademarkclaims@godaddy.com, coyprightclaims@godaddy.com, and contentcomplaints@godaddy.com, respectively. Our [Front of Site](https://supportcenter.godaddy.com/AbuseReport) also describes other scenarios not covered by the API.</p><p>When you submit abuse reports via GoDaddy’s Abuse API, you must ensure that you accurately categorize the abuse type of each report to match our definitions in the API documentations provided to you. Any submission that fails to match our definitions or is miscategorized will be marked as a false positive. Examples include, but are not limited to, submissions of trademark complaints marked as phishing or malware, or submissions of copyright complaints marked as phishing or malware, etc.</p><p>If, at any time, the false positive rate of submissions exceeds 40% of your total submissions, as determined by GoDaddy, GoDaddy may in its sole discretion deprioritize any subsequent reports submitted by you and/or your organization.</p><p>You acknowledge and agree that submitting every URL for a single domain is not necessary and will not expedite the review process. If your submissions exceed five (5) URLs for a single domain, your report will be marked as a duplicate submission taking into account that the final outcome of such submissions would yield the same result as the original report. GoDaddy may in its sole discretion deprioritize reports submitted by you and/or your organization in the event more than 20% of your submissions are classified as duplicate submissions.</p><p>You further acknowledge and agree that our Customer Support lines are not intended to address abuse reporting matters or your use of GoDaddy’s Abuse API. Contacting Customer Support will not expedite the review process and may result in abuse reports being deprioritized, to be determined in our sole discretion.</p><p>Should you have any questions about GoDaddy’s Abuse API or any of the terms and conditions set forth above, please contact abuseapisupport@godaddy.com.</p>"
  },
  "tags": [
    {
      "name": "Abuse",
      "description": ""
    },
    {
      "name": "Aftermarket",
      "description": ""
    },
    {
      "name": "Agreements",
      "description": ""
    },
    {
      "name": "Certificates",
      "description": ""
    },
    {
      "name": "Countries",
      "description": ""
    },
    {
      "name": "Domains",
      "description": ""
    },
    {
      "name": "Orders",
      "description": ""
    },
    {
      "name": "Parking",
      "description": ""
    },
    {
      "name": "Shoppers",
      "description": ""
    },
    {
      "name": "Subscriptions",
      "description": ""
    }
  ],
  "host": "api.ote-godaddy.com",
  "paths": {
    "/v1/aftermarket/listings": {
      "delete": {
        "tags": [
          "Aftermarket"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "A comma separated list of domain names",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "domains",
            "required": true,
            "type": "array"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/AftermarketListingAction"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "\tRequired parameters must be specified in correct format",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "deleteListings",
        "summary": "Remove listings from GoDaddy Auction"
      }
    },
    "/v1/aftermarket/listings/expiry": {
      "post": {
        "tags": [
          "Aftermarket"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "An array of expiry listings to be loaded",
            "in": "body",
            "name": "expiryListings",
            "required": true,
            "schema": {
              "items": {
                "$ref": "#/definitions/AftermarketListingExpiryCreate"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/AftermarketListingAction"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Required parameters must be specified in correct format<br>Too many Listings provided<br>Invalid Losing Registrar Id",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "addExpiryListings",
        "summary": "Add expiry listings into GoDaddy Auction"
      }
    },
    "/v1/abuse/tickets": {
      "get": {
        "tags": [
          "Abuse"
        ],
        "parameters": [
          {
            "description": "The type of abuse.",
            "enum": [
              "A_RECORD",
              "CHILD_ABUSE",
              "CONTENT",
              "FRAUD_WIRE",
              "IP_BLOCK",
              "MALWARE",
              "NETWORK_ABUSE",
              "PHISHING",
              "SPAM"
            ],
            "in": "query",
            "name": "type",
            "required": false,
            "type": "string"
          },
          {
            "default": false,
            "description": "Is this abuse ticket closed?",
            "in": "query",
            "name": "closed",
            "required": false,
            "type": "boolean"
          },
          {
            "description": "The domain name or ip address the abuse originated from",
            "format": "host-name-or-ip-address",
            "in": "query",
            "name": "sourceDomainOrIp",
            "required": false,
            "type": "string"
          },
          {
            "description": "The brand/company the abuse is targeting. ie: brand name/bank name",
            "in": "query",
            "name": "target",
            "required": false,
            "type": "string"
          },
          {
            "description": "The earliest abuse ticket creation date to pull abuse tickets for",
            "format": "iso-datetime",
            "in": "query",
            "name": "createdStart",
            "required": false,
            "type": "string"
          },
          {
            "description": "The latest abuse ticket creation date to pull abuse tickets for",
            "format": "iso-datetime",
            "in": "query",
            "name": "createdEnd",
            "required": false,
            "type": "string"
          },
          {
            "default": 100,
            "description": "Number of abuse ticket numbers to return.",
            "format": "integer-positive",
            "in": "query",
            "maximum": 100,
            "name": "limit",
            "required": false,
            "type": "integer"
          },
          {
            "default": 0,
            "description": "The earliest result set record number to pull abuse tickets for",
            "format": "integer-positive",
            "in": "query",
            "name": "offset",
            "required": false,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/AbuseTicketList"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "getTickets",
        "summary": "List all abuse tickets ids that match user provided filters"
      },
      "post": {
        "tags": [
          "Abuse"
        ],
        "parameters": [
          {
            "description": "The endpoint which allows the Reporter to create a new abuse ticket",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AbuseTicketCreate"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No response was specified"
          },
          "201": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/AbuseTicketId"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "createTicket",
        "summary": "Create a new abuse ticket"
      }
    },
    "/v1/abuse/tickets/{ticketId}": {
      "get": {
        "tags": [
          "Abuse"
        ],
        "parameters": [
          {
            "description": "A unique abuse ticket identifier",
            "in": "path",
            "name": "ticketId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Success",
            "schema": {
              "$ref": "#/definitions/AbuseTicket"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Invalid ticket id provided",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "getTicketInfo",
        "summary": "Return the abuse ticket data for a given ticket id"
      }
    },
    "/v1/agreements": {
      "get": {
        "tags": [
          "Agreements"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "PrivateLabelId to operate as, if different from JWT",
            "in": "header",
            "name": "X-Private-Label-Id",
            "required": false,
            "type": "integer"
          },
          {
            "default": "en-US",
            "description": "Unique identifier of the Market used to retrieve/translate Legal Agreements",
            "format": "bcp-47",
            "in": "header",
            "name": "X-Market-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Keys for Agreements whose details are to be retrieved",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "keys",
            "required": true,
            "type": "array"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "items": {
                "$ref": "#/definitions/LegalAgreement"
              },
              "type": "array"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "getAgreements",
        "summary": "Retrieve Legal Agreements for provided agreements keys"
      }
    },
    "/v1/certificates": {
      "post": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "default": "Default locale for shopper account",
            "description": "Setting locale for communications such as emails and error messages",
            "in": "header",
            "name": "X-Market-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "The certificate order information",
            "in": "body",
            "name": "certificateCreate",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CertificateCreate"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/CertificateIdentifier"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Certificate state does not allow renew",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`email` is not empty<br>`csr` is invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "<p>Creating a certificate order can be a long running asynchronous operation in the PKI workflow. The PKI API supports 2 options for getting the completion stateful actions for this asynchronous operations: 1) by polling operations -- see /v1/certificates/{certificateId}/actions 2) via WebHook style callback -- see '/v1/certificates/{certificateId}/callback'.</p>",
        "operationId": "certificate_create",
        "summary": "Create a pending order for certificate"
      }
    },
    "/v1/certificates/validate": {
      "post": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "default": "Default locale for shopper account",
            "description": "Setting locale for communications such as emails and error messages",
            "in": "header",
            "name": "X-Market-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "The certificate order info",
            "in": "body",
            "name": "certificateCreate",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CertificateCreate"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Request validated successfully"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Certificate state does not allow renew",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`email` is not empty <br> `csr` is invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "certificate_validate",
        "summary": "Validate a pending order for certificate"
      }
    },
    "/v1/certificates/{certificateId}": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to lookup",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Certificate details retrieved",
            "schema": {
              "$ref": "#/definitions/Certificate"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Certificate id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "Once the certificate order has been created, this method can be used to check the status of the certificate. This method can also be used to retrieve details of the certificate.",
        "operationId": "certificate_get",
        "summary": "Retrieve certificate details"
      }
    },
    "/v1/certificates/{certificateId}/actions": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to register for callback",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Action retrieval successful",
            "schema": {
              "$ref": "#/definitions/ArrayOfCertificateAction"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Certificate not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "This method is used to retrieve all stateful actions relating to a certificate lifecycle.",
        "operationId": "certificate_action_retrieve",
        "summary": "Retrieve all certificate actions"
      }
    },
    "/v1/certificates/{certificateId}/email/{emailId}/resend": {
      "post": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to resend email",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Email id for email to resend",
            "in": "path",
            "name": "emailId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Email sent successfully"
          },
          "404": {
            "description": "Certificate not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Email Id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "This method can be used to resend emails by providing the certificate id and the email id",
        "operationId": "certificate_resend_email",
        "summary": "Resend an email"
      }
    },
    "/v1/certificates/{certificateId}/email/resend/{emailAddress}": {
      "post": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to resend emails",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Specific email address to resend email",
            "in": "path",
            "name": "emailAddress",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Alternate email address added and emails re-sent",
            "schema": {
              "$ref": "#/definitions/CertificateEmailHistory"
            }
          },
          "404": {
            "description": "Certificate not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Certificate state does not allow alternate email address",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "This method adds an alternate email address to a certificate order and re-sends all existing request emails to that address.",
        "operationId": "certificate_alternate_email_address",
        "summary": "Add alternate email address"
      }
    },
    "/v1/certificates/{certificateId}/email/{emailId}/resend/{emailAddress}": {
      "post": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to resend emails",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Email id for email to resend",
            "in": "path",
            "name": "emailId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Specific email address to resend email",
            "in": "path",
            "name": "emailAddress",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Email sent successfully"
          },
          "404": {
            "description": "Certificate not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Email Id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "This method can be used to resend emails by providing the certificate id, the email id, and the recipient email address",
        "operationId": "certificate_resend_email_address",
        "summary": "Resend email to email address"
      }
    },
    "/v1/certificates/{certificateId}/email/history": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to retrieve email history",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Email history retrieval successful",
            "schema": {
              "$ref": "#/definitions/CertificateEmailHistory"
            }
          },
          "409": {
            "description": "Email history not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "This method can be used to retrieve all emails sent for a certificate.",
        "operationId": "certificate_email_history",
        "summary": "Retrieve email history"
      }
    },
    "/v1/certificates/{certificateId}/callback": {
      "delete": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to unregister callback",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Callback removed"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Certificate id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "Unregister the callback for a particular certificate.",
        "operationId": "certificate_callback_delete",
        "summary": "Unregister system callback"
      },
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to register for stateful action callback",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Callback registered",
            "schema": {
              "$ref": "#/definitions/CertificateCallback"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Certificate id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "This method is used to retrieve the registered callback url for a certificate.",
        "operationId": "certificate_callback_get",
        "summary": "Retrieve system stateful action callback url"
      },
      "put": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to register/replace for callback",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Callback url registered/replaced to receive stateful actions",
            "in": "query",
            "name": "callbackUrl",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Callback replaced/registered"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Certificate id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Callback url is missing <br> Callback url is malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "This method is used to register/replace url for callbacks for stateful actions relating to a certificate lifecycle. The callback url is a Webhook style pattern and will receive POST http requests with json body defined in the CertificateAction model definition for each certificate action.  Only one callback URL is allowed to be registered for each certificateId, so it will replace a previous registration.",
        "operationId": "certificate_callback_replace",
        "summary": "Register of certificate action callback"
      }
    },
    "/v1/certificates/{certificateId}/cancel": {
      "post": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to cancel",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Certificate order has been canceled"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Certificate id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Certificate state does not allow cancel",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "Use the cancel call to cancel a pending certificate order.",
        "operationId": "certificate_cancel",
        "summary": "Cancel a pending certificate"
      }
    },
    "/v1/certificates/{certificateId}/download": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to download",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Certificate retrieved",
            "schema": {
              "$ref": "#/definitions/CertificateBundle"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Certificate id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Certificate state does not allow download",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "certificate_download",
        "summary": "Download certificate"
      }
    },
    "/v1/certificates/{certificateId}/reissue": {
      "post": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to reissue",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          },
          {
            "description": "The reissue request info",
            "in": "body",
            "name": "reissueCreate",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CertificateReissue"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Reissue request created"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Certificate id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Certificate state does not allow reissue",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`csr` is invalid<br>Delay revocation exceeds maximum",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "<p>Rekeying is the process by which the private and public key is changed for a certificate. It is a simplified reissue,where only the CSR is changed. Reissuing is the process by which domain names are added or removed from a certificate.Once a request is validated and approved, the certificate will be reissued with the new common name and sans specified. Unlimited reissues are available during the lifetime of the certificate.New names added to a certificate that do not share the base domain of the common name may take additional time to validate. If this API call is made before a previous pending reissue has been validated and issued, the previous reissue request is automatically rejected and replaced with the current request.</p>",
        "operationId": "certificate_reissue",
        "summary": "Reissue active certificate"
      }
    },
    "/v1/certificates/{certificateId}/renew": {
      "post": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to renew",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          },
          {
            "description": "The renew request info",
            "in": "body",
            "name": "renewCreate",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CertificateRenew"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Renew request created"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Certificate id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Certificate state does not allow renew",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`csr` is invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "Renewal is the process by which the validity of a certificate is extended. Renewal is only available 60 days prior to expiration of the previous certificate and 30 days after the expiration of the previous certificate. The renewal supports modifying a set of the original certificate order information. Once a request is validated and approved, the certificate will be issued with extended validity. Since subject alternative names can be removed during a renewal, we require that you provide the subject alternative names you expect in the renewed certificate. New names added to a certificate that do not share the base domain of the common name may take additional time to validate. </p>",
        "operationId": "certificate_renew",
        "summary": "Renew active certificate"
      }
    },
    "/v1/certificates/{certificateId}/revoke": {
      "post": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to revoke",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          },
          {
            "description": "The certificate revocation request",
            "in": "body",
            "name": "certificateRevoke",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CertificateRevoke"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Certificate Revoked"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Certificate id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Certificate state does not allow revoke",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "Use revoke call to revoke an active certificate, if the certificate has not been issued a 404 response will be returned.",
        "operationId": "certificate_revoke",
        "summary": "Revoke active certificate"
      }
    },
    "/v1/certificates/{certificateId}/siteSeal": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          },
          {
            "default": "LIGHT",
            "description": "This value represents the visual theme of the seal. If seal doesn't exist, default values are used if params not present. If seal does exist, default values will not be used to update unless params present.",
            "enum": [
              "DARK",
              "LIGHT"
            ],
            "in": "query",
            "name": "theme",
            "required": false,
            "type": "string"
          },
          {
            "default": "en",
            "description": "Determine locale for text displayed in seal image and verification page. If seal doesn't exist, default values are used if params not present. If seal does exist, default values will not be used to update unless params present.",
            "in": "query",
            "name": "locale",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Site seal retrieved",
            "schema": {
              "$ref": "#/definitions/CertificateSiteSeal"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Certificate id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Certificate state does not allow seal",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "'locale' is invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "<p>This method is used to obtain the site seal information for an issued certificate. A site seal is a graphic that the certificate purchaser can embed on their web site to show their visitors information about their SSL certificate. If a web site visitor clicks on the site seal image, a pop-up page is displayed that contains detailed information about the SSL certificate. The site seal token is used to link the site seal graphic image to the appropriate certificate details pop-up page display when a user clicks on the site seal. The site seal images are expected to be static images and hosted on the reseller's website, to minimize delays for customer page load times.</p>",
        "operationId": "certificate_siteseal_get",
        "summary": "Get Site seal"
      }
    },
    "/v1/certificates/{certificateId}/verifyDomainControl": {
      "post": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Certificate id to lookup",
            "in": "path",
            "name": "certificateId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Domain control was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Certificate id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Domain control was not successful <br> Certificate state does not allow domain control",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "Domain control is a means for verifying the domain included in the certificate order. This resource is useful for resellers that control the domains for their customers, and can expedite the verification process. See https://www.godaddy.com/help/verifying-your-domain-ownership-for-ssl-certificate-requests-html-or-dns-7452",
        "operationId": "certificate_verifydomaincontrol",
        "summary": "Check Domain Control"
      }
    },
    "/v2/certificates": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Entitlement id to lookup",
            "in": "query",
            "name": "entitlementId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Fetch only the most recent certificate",
            "in": "query",
            "name": "latest",
            "required": false,
            "default": true,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Certificate details retrieved",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Certificate"
              }
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Entitlement id not provided",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "Once the certificate order has been created, this method can be used to check the status of the certificate. This method can also be used to retrieve details of the certificates associated to an entitlement.",
        "operationId": "certificate_get_entitlement",
        "summary": "Search for certificate details by entitlement"
      }
    },
    "/v2/certificates/download": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Entitlement id to download",
            "in": "query",
            "name": "entitlementId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Certificate retrieved",
            "schema": {
              "$ref": "#/definitions/CertificateBundle"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Entitlement id not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Certificate state does not allow download",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Entitlement id not provided",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "certificate_download_entitlement",
        "summary": "Download certificate by entitlement"
      }
    },
    "/v2/customers/{customerId}/certificates": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/customerId"
          },
          {
            "$ref": "#/parameters/offset"
          },
          {
            "$ref": "#/parameters/limit"
          }
        ],
        "responses": {
          "200": {
            "description": "Customer certificate information retrieved.",
            "schema": {
              "$ref": "#/definitions/CertificateSummariesV2"
            }
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "422": {
            "$ref": "#/responses/422"
          },
          "429": {
            "$ref": "#/responses/429"
          },
          "500": {
            "$ref": "#/responses/500"
          }
        },
        "description": "This method can be used to retrieve a list of certificates for a specified customer. <ul><li>**shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>",
        "operationId": "getCustomerCertificatesByCustomerId",
        "summary": "Retrieve customer's certificates"
      }
    },
    "/v2/customers/{customerId}/certificates/{certificateId}": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/customerId"
          },
          {
            "$ref": "#/parameters/certificateId"
          }
        ],
        "responses": {
          "200": {
            "description": "Certificate details retrieved",
            "schema": {
              "$ref": "#/definitions/CertificateDetailV2"
            }
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "404": {
            "$ref": "#/responses/404"
          },
          "422": {
            "$ref": "#/responses/422"
          },
          "429": {
            "$ref": "#/responses/429"
          },
          "500": {
            "$ref": "#/responses/500"
          }
        },
        "description": "Once the certificate order has been created, this method can be used to check the status of the certificate. This method can also be used to retrieve details of the certificate. <ul><li>**shopperId** is **not the same** as **customerId**. **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>",
        "operationId": "getCertificateDetailByCertIdentifier",
        "summary": "Retrieve individual certificate details"
      }
    },
    "/v2/customers/{customerId}/certificates/{certificateId}/domainVerifications": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "$ref": "#/parameters/customerId"
          },
          {
            "$ref": "#/parameters/certificateId"
          }
        ],
        "responses": {
          "200": {
            "description": "Domain verification status list for specified certificateId.",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DomainVerificationSummary"
              }
            }
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "404": {
            "$ref": "#/responses/404"
          },
          "422": {
            "$ref": "#/responses/422"
          },
          "429": {
            "$ref": "#/responses/429"
          },
          "500": {
            "$ref": "#/responses/500"
          }
        },
        "description": "This method can be used to retrieve the domain verification status for a certificate request.<ul><li>**shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>\"",
        "operationId": "getDomainInformationByCertificateId",
        "summary": "Retrieve domain verification status"
      }
    },
    "/v2/customers/{customerId}/certificates/{certificateId}/domainVerifications/{domain}": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "description": "Retrieve detailed information for supplied domain, including domain verification details and Certificate Authority Authorization (CAA) verification details. <ul><li>**shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>",
        "operationId": "getDomainDetailsByDomain",
        "summary": "Retrieve detailed information for supplied domain",
        "parameters": [
          {
            "$ref": "#/parameters/customerId"
          },
          {
            "$ref": "#/parameters/certificateId"
          },
          {
            "$ref": "#/parameters/domain"
          }
        ],
        "responses": {
          "200": {
            "description": "Retrieve detailed information for supplied domain, including domain verification details and Certificate Authority Authorization (CAA) verification details.",
            "schema": {
              "$ref": "#/definitions/DomainVerificationDetail"
            }
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "404": {
            "$ref": "#/responses/404"
          },
          "422": {
            "$ref": "#/responses/422"
          },
          "429": {
            "$ref": "#/responses/429"
          },
          "500": {
            "$ref": "#/responses/500"
          }
        }
      }
    },
    "/v2/customers/{customerId}/certificates/acme/externalAccountBinding": {
      "get": {
        "tags": [
          "Certificate"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "description": "Use this endpoint to retrieve a key identifier and Hash-based Message Authentication Code (HMAC) key for Automated Certificate Management Environment (ACME) External Account Binding (EAB). These credentials can be used with an ACME client that supports EAB (ex. CertBot) to automate the issuance request and deployment of DV SSL certificates",
        "operationId": "getAcmeExternalAccountBinding",
        "summary": "Retrieves the external account binding for the specified customer",
        "parameters": [
          {
            "$ref": "#/parameters/customerId"
          }
        ],
        "responses": {
          "200": {
            "description": "Acme key identifier and HMAC key for the external account binding. Directory URI is also provided for making ACME requests.",
            "schema": {
              "$ref": "#/definitions/ExternalAccountBinding"
            }
          },
          "401": {
            "$ref": "#/responses/401"
          },
          "403": {
            "$ref": "#/responses/403"
          },
          "404": {
            "$ref": "#/responses/404"
          },
          "422": {
            "$ref": "#/responses/422"
          },
          "429": {
            "$ref": "#/responses/429"
          },
          "500": {
            "$ref": "#/responses/500"
          }
        }
      }
    },
    "/v1/countries": {
      "get": {
        "tags": [
          "Countries"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "MarketId in which the request is being made, and for which responses should be localized",
            "format": "bcp-47",
            "in": "query",
            "name": "marketId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Restrict countries to this region type; required if regionName is supplied",
            "in": "query",
            "name": "regionTypeId",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Restrict countries to this region name; required if regionTypeId is supplied",
            "in": "query",
            "name": "regionName",
            "required": false,
            "type": "string"
          },
          {
            "default": "key",
            "description": "The term to sort the result countries by.",
            "enum": [
              "key",
              "label"
            ],
            "in": "query",
            "name": "sort",
            "required": false,
            "type": "string"
          },
          {
            "default": "ascending",
            "description": "The direction to sort the result countries by.",
            "enum": [
              "ascending",
              "descending"
            ],
            "in": "query",
            "name": "order",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/ArrayOfCountrySummary"
            }
          },
          "422": {
            "description": "marketId is required<br>regionTypeId is not a valid integer<br>regionName is required when regionTypeId is provided<br>regionTypeId is required when regionName is provided",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "Authorization is not required",
        "operationId": "getCountries",
        "summary": "Retrieves summary country information for the provided marketId and filters"
      }
    },
    "/v1/countries/{countryKey}": {
      "get": {
        "tags": [
          "Countries"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "The country key",
            "format": "iso-country-code",
            "in": "path",
            "name": "countryKey",
            "required": true,
            "type": "string"
          },
          {
            "description": "MarketId in which the request is being made, and for which responses should be localized",
            "format": "bcp-47",
            "in": "query",
            "name": "marketId",
            "required": true,
            "type": "string"
          },
          {
            "default": "key",
            "description": "The term to sort the result country states by.",
            "enum": [
              "key",
              "label"
            ],
            "in": "query",
            "name": "sort",
            "required": false,
            "type": "string"
          },
          {
            "default": "ascending",
            "description": "The direction to sort the result country states by.",
            "enum": [
              "ascending",
              "descending"
            ],
            "in": "query",
            "name": "order",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/ArrayOfCountry"
            }
          },
          "404": {
            "description": "Country not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "marketId is required",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "Authorization is not required",
        "operationId": "getCountry",
        "summary": "Retrieves country and summary state information for provided countryKey"
      }
    },
    "/v1/domains": {
      "get": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID whose domains are to be retrieved",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Only include results with `status` value in the specified set",
            "in": "query",
            "items": {
              "enum": [
                "ACTIVE",
                "AWAITING_CLAIM_ACK",
                "AWAITING_DOCUMENT_AFTER_TRANSFER",
                "AWAITING_DOCUMENT_AFTER_UPDATE_ACCOUNT",
                "AWAITING_DOCUMENT_UPLOAD",
                "AWAITING_FAILED_TRANSFER_WHOIS_PRIVACY",
                "AWAITING_PAYMENT",
                "AWAITING_RENEWAL_TRANSFER_IN_COMPLETE",
                "AWAITING_TRANSFER_IN_ACK",
                "AWAITING_TRANSFER_IN_AUTH",
                "AWAITING_TRANSFER_IN_AUTO",
                "AWAITING_TRANSFER_IN_WHOIS",
                "AWAITING_TRANSFER_IN_WHOIS_FIX",
                "AWAITING_VERIFICATION_ICANN",
                "AWAITING_VERIFICATION_ICANN_MANUAL",
                "CANCELLED",
                "CANCELLED_HELD",
                "CANCELLED_REDEEMABLE",
                "CANCELLED_TRANSFER",
                "CONFISCATED",
                "DISABLED_SPECIAL",
                "EXCLUDED_INVALID_CLAIM_FIREHOSE",
                "EXPIRED_REASSIGNED",
                "FAILED_BACKORDER_CAPTURE",
                "FAILED_DROP_IMMEDIATE_THEN_ADD",
                "FAILED_PRE_REGISTRATION",
                "FAILED_REDEMPTION",
                "FAILED_REDEMPTION_REPORT",
                "FAILED_REGISTRATION",
                "FAILED_REGISTRATION_FIREHOSE",
                "FAILED_RESTORATION_REDEMPTION_MOCK",
                "FAILED_SETUP",
                "FAILED_TRANSFER_IN",
                "FAILED_TRANSFER_IN_BAD_STATUS",
                "FAILED_TRANSFER_IN_REGISTRY",
                "HELD_COURT_ORDERED",
                "HELD_DISPUTED",
                "HELD_EXPIRATION_PROTECTION",
                "HELD_EXPIRED_REDEMPTION_MOCK",
                "HELD_REGISTRAR_ADD",
                "HELD_REGISTRAR_REMOVE",
                "HELD_SHOPPER",
                "HELD_TEMPORARY",
                "LOCKED_ABUSE",
                "LOCKED_COPYRIGHT",
                "LOCKED_REGISTRY",
                "LOCKED_SUPER",
                "PARKED_AND_HELD",
                "PARKED_EXPIRED",
                "PARKED_VERIFICATION_ICANN",
                "PENDING_ABORT_CANCEL_SETUP",
                "PENDING_AGREEMENT_PRE_REGISTRATION",
                "PENDING_APPLY_RENEWAL_CREDITS",
                "PENDING_BACKORDER_CAPTURE",
                "PENDING_BLOCKED_REGISTRY",
                "PENDING_CANCEL_REGISTRANT_PROFILE",
                "PENDING_COMPLETE_REDEMPTION_WITHOUT_RECEIPT",
                "PENDING_COMPLETE_REGISTRANT_PROFILE",
                "PENDING_COO",
                "PENDING_COO_COMPLETE",
                "PENDING_DNS",
                "PENDING_DNS_ACTIVE",
                "PENDING_DNS_INACTIVE",
                "PENDING_DOCUMENT_VALIDATION",
                "PENDING_DOCUMENT_VERIFICATION",
                "PENDING_DROP_IMMEDIATE",
                "PENDING_DROP_IMMEDIATE_THEN_ADD",
                "PENDING_EPP_CREATE",
                "PENDING_EPP_DELETE",
                "PENDING_EPP_UPDATE",
                "PENDING_ESCALATION_REGISTRY",
                "PENDING_EXPIRATION",
                "PENDING_EXPIRATION_RESPONSE",
                "PENDING_EXPIRATION_SYNC",
                "PENDING_EXPIRED_REASSIGNMENT",
                "PENDING_EXPIRE_AUTO_ADD",
                "PENDING_EXTEND_REGISTRANT_PROFILE",
                "PENDING_FAILED_COO",
                "PENDING_FAILED_EPP_CREATE",
                "PENDING_FAILED_HELD",
                "PENDING_FAILED_PURCHASE_PREMIUM",
                "PENDING_FAILED_RECONCILE_FIREHOSE",
                "PENDING_FAILED_REDEMPTION_WITHOUT_RECEIPT",
                "PENDING_FAILED_RELEASE_PREMIUM",
                "PENDING_FAILED_RENEW_EXPIRATION_PROTECTION",
                "PENDING_FAILED_RESERVE_PREMIUM",
                "PENDING_FAILED_SUBMIT_FIREHOSE",
                "PENDING_FAILED_TRANSFER_ACK_PREMIUM",
                "PENDING_FAILED_TRANSFER_IN_ACK_PREMIUM",
                "PENDING_FAILED_TRANSFER_IN_PREMIUM",
                "PENDING_FAILED_TRANSFER_PREMIUM",
                "PENDING_FAILED_TRANSFER_SUBMIT_PREMIUM",
                "PENDING_FAILED_UNLOCK_PREMIUM",
                "PENDING_FAILED_UPDATE_API",
                "PENDING_FRAUD_VERIFICATION",
                "PENDING_FRAUD_VERIFIED",
                "PENDING_GET_CONTACTS",
                "PENDING_GET_HOSTS",
                "PENDING_GET_NAME_SERVERS",
                "PENDING_GET_STATUS",
                "PENDING_HOLD_ESCROW",
                "PENDING_HOLD_REDEMPTION",
                "PENDING_LOCK_CLIENT_REMOVE",
                "PENDING_LOCK_DATA_QUALITY",
                "PENDING_LOCK_THEN_HOLD_REDEMPTION",
                "PENDING_PARKING_DETERMINATION",
                "PENDING_PARK_INVALID_WHOIS",
                "PENDING_PARK_INVALID_WHOIS_REMOVAL",
                "PENDING_PURCHASE_PREMIUM",
                "PENDING_RECONCILE",
                "PENDING_RECONCILE_FIREHOSE",
                "PENDING_REDEMPTION",
                "PENDING_REDEMPTION_REPORT",
                "PENDING_REDEMPTION_REPORT_COMPLETE",
                "PENDING_REDEMPTION_REPORT_SUBMITTED",
                "PENDING_REDEMPTION_WITHOUT_RECEIPT",
                "PENDING_REDEMPTION_WITHOUT_RECEIPT_MOCK",
                "PENDING_RELEASE_PREMIUM",
                "PENDING_REMOVAL",
                "PENDING_REMOVAL_HELD",
                "PENDING_REMOVAL_PARKED",
                "PENDING_REMOVAL_UNPARK",
                "PENDING_RENEWAL",
                "PENDING_RENEW_EXPIRATION_PROTECTION",
                "PENDING_RENEW_INFINITE",
                "PENDING_RENEW_LOCKED",
                "PENDING_RENEW_WITHOUT_RECEIPT",
                "PENDING_REPORT_REDEMPTION_WITHOUT_RECEIPT",
                "PENDING_RESERVE_PREMIUM",
                "PENDING_RESET_VERIFICATION_ICANN",
                "PENDING_RESPONSE_FIREHOSE",
                "PENDING_RESTORATION",
                "PENDING_RESTORATION_INACTIVE",
                "PENDING_RESTORATION_REDEMPTION_MOCK",
                "PENDING_RETRY_EPP_CREATE",
                "PENDING_RETRY_HELD",
                "PENDING_SEND_AUTH_CODE",
                "PENDING_SETUP",
                "PENDING_SETUP_ABANDON",
                "PENDING_SETUP_AGREEMENT_LANDRUSH",
                "PENDING_SETUP_AGREEMENT_SUNRISE2_A",
                "PENDING_SETUP_AGREEMENT_SUNRISE2_B",
                "PENDING_SETUP_AGREEMENT_SUNRISE2_C",
                "PENDING_SETUP_AUTH",
                "PENDING_SETUP_DNS",
                "PENDING_SETUP_FAILED",
                "PENDING_SETUP_REVIEW",
                "PENDING_SETUP_SUNRISE",
                "PENDING_SETUP_SUNRISE_PRE",
                "PENDING_SETUP_SUNRISE_RESPONSE",
                "PENDING_SUBMIT_FAILURE",
                "PENDING_SUBMIT_FIREHOSE",
                "PENDING_SUBMIT_HOLD_FIREHOSE",
                "PENDING_SUBMIT_HOLD_LANDRUSH",
                "PENDING_SUBMIT_HOLD_SUNRISE",
                "PENDING_SUBMIT_LANDRUSH",
                "PENDING_SUBMIT_RESPONSE_FIREHOSE",
                "PENDING_SUBMIT_RESPONSE_LANDRUSH",
                "PENDING_SUBMIT_RESPONSE_SUNRISE",
                "PENDING_SUBMIT_SUCCESS_FIREHOSE",
                "PENDING_SUBMIT_SUCCESS_LANDRUSH",
                "PENDING_SUBMIT_SUCCESS_SUNRISE",
                "PENDING_SUBMIT_SUNRISE",
                "PENDING_SUBMIT_WAITING_LANDRUSH",
                "PENDING_SUCCESS_PRE_REGISTRATION",
                "PENDING_SUSPENDED_DATA_QUALITY",
                "PENDING_TRANSFER_ACK_PREMIUM",
                "PENDING_TRANSFER_IN",
                "PENDING_TRANSFER_IN_ACK",
                "PENDING_TRANSFER_IN_ACK_PREMIUM",
                "PENDING_TRANSFER_IN_BAD_REGISTRANT",
                "PENDING_TRANSFER_IN_CANCEL",
                "PENDING_TRANSFER_IN_CANCEL_REGISTRY",
                "PENDING_TRANSFER_IN_COMPLETE_ACK",
                "PENDING_TRANSFER_IN_DELETE",
                "PENDING_TRANSFER_IN_LOCK",
                "PENDING_TRANSFER_IN_NACK",
                "PENDING_TRANSFER_IN_NOTIFICATION",
                "PENDING_TRANSFER_IN_PREMIUM",
                "PENDING_TRANSFER_IN_RELEASE",
                "PENDING_TRANSFER_IN_RESPONSE",
                "PENDING_TRANSFER_IN_UNDERAGE",
                "PENDING_TRANSFER_OUT",
                "PENDING_TRANSFER_OUT_ACK",
                "PENDING_TRANSFER_OUT_NACK",
                "PENDING_TRANSFER_OUT_PREMIUM",
                "PENDING_TRANSFER_OUT_UNDERAGE",
                "PENDING_TRANSFER_OUT_VALIDATION",
                "PENDING_TRANSFER_PREMIUM",
                "PENDING_TRANSFER_PREMUIM",
                "PENDING_TRANSFER_SUBMIT_PREMIUM",
                "PENDING_UNLOCK_DATA_QUALITY",
                "PENDING_UNLOCK_PREMIUM",
                "PENDING_UPDATE",
                "PENDING_UPDATED_REGISTRANT_DATA_QUALITY",
                "PENDING_UPDATE_ACCOUNT",
                "PENDING_UPDATE_API",
                "PENDING_UPDATE_API_RESPONSE",
                "PENDING_UPDATE_AUTH",
                "PENDING_UPDATE_CONTACTS",
                "PENDING_UPDATE_CONTACTS_PRIVACY",
                "PENDING_UPDATE_DNS",
                "PENDING_UPDATE_DNS_SECURITY",
                "PENDING_UPDATE_ELIGIBILITY",
                "PENDING_UPDATE_EPP_CONTACTS",
                "PENDING_UPDATE_MEMBERSHIP",
                "PENDING_UPDATE_OWNERSHIP",
                "PENDING_UPDATE_OWNERSHIP_AUTH_AUCTION",
                "PENDING_UPDATE_OWNERSHIP_HELD",
                "PENDING_UPDATE_REGISTRANT",
                "PENDING_UPDATE_REPO",
                "PENDING_VALIDATION_DATA_QUALITY",
                "PENDING_VERIFICATION_FRAUD",
                "PENDING_VERIFICATION_STATUS",
                "PENDING_VERIFY_REGISTRANT_DATA_QUALITY",
                "RESERVED",
                "RESERVED_PREMIUM",
                "REVERTED",
                "SUSPENDED_VERIFICATION_ICANN",
                "TRANSFERRED_OUT",
                "UNLOCKED_ABUSE",
                "UNLOCKED_SUPER",
                "UNPARKED_AND_UNHELD",
                "UPDATED_OWNERSHIP",
                "UPDATED_OWNERSHIP_HELD"
              ],
              "type": "string"
            },
            "name": "statuses",
            "required": false,
            "type": "array"
          },
          {
            "description": "Only include results with `status` value in any of the specified groups",
            "in": "query",
            "items": {
              "enum": [
                "INACTIVE",
                "PRE_REGISTRATION",
                "REDEMPTION",
                "RENEWABLE",
                "VERIFICATION_ICANN",
                "VISIBLE"
              ],
              "type": "string"
            },
            "name": "statusGroups",
            "required": false,
            "type": "array"
          },
          {
            "description": "Maximum number of domains to return",
            "in": "query",
            "maximum": 1000,
            "minimum": 1,
            "name": "limit",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Marker Domain to use as the offset in results",
            "in": "query",
            "name": "marker",
            "required": false,
            "type": "string"
          },
          {
            "description": "Optional details to be included in the response",
            "in": "query",
            "items": {
              "enum": [
                "authCode",
                "contacts",
                "nameServers"
              ],
              "type": "string"
            },
            "name": "includes",
            "required": false,
            "type": "array"
          },
          {
            "description": "Only include results that have been modified since the specified date",
            "format": "iso-datetime",
            "in": "query",
            "name": "modifiedDate",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "items": {
                "$ref": "#/definitions/DomainSummary"
              },
              "type": "array"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Limit must have a value no greater than 1000",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "list Domains",
        "summary": "Retrieve a list of Domains for the specified Shopper"
      }
    },
    "/v1/domains/agreements": {
      "get": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "default": "en-US",
            "description": "Unique identifier of the Market used to retrieve/translate Legal Agreements",
            "format": "bcp-47",
            "in": "header",
            "name": "X-Market-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "list of TLDs whose legal agreements are to be retrieved",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "tlds",
            "required": true,
            "type": "array"
          },
          {
            "description": "Whether or not privacy has been requested",
            "in": "query",
            "name": "privacy",
            "required": true,
            "type": "boolean"
          },
          {
            "description": "Whether or not domain tranfer has been requested",
            "in": "query",
            "name": "forTransfer",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "items": {
                "$ref": "#/definitions/LegalAgreement"
              },
              "type": "array"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "getAgreement",
        "summary": "Retrieve the legal agreement(s) required to purchase the specified TLD and add-ons"
      }
    },
    "/v1/domains/available": {
      "get": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Domain name whose availability is to be checked",
            "in": "query",
            "name": "domain",
            "required": true,
            "type": "string"
          },
          {
            "default": "FAST",
            "description": "Optimize for time ('FAST') or accuracy ('FULL')",
            "enum": [
              "FAST",
              "FULL",
              "fast",
              "full"
            ],
            "in": "query",
            "name": "checkType",
            "required": false,
            "type": "string"
          },
          {
            "default": false,
            "description": "Whether or not to include domains available for transfer. If set to True, checkType is ignored",
            "in": "query",
            "name": "forTransfer",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/DomainAvailableResponse"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot convert domain label error<br>Domain is missing IDN script<br>Domain segment ends with dash<br>Domain starts with dashbr>Domain uses unsupported IDN script<br>FQDN fails generic validity regex<br>Invalid character(s) error<br>Invalid tld error<br>Non-IDN domain name must not have dashes at the third and fourth position<br>Reserved name error<br>domain must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "available",
        "summary": "Determine whether or not the specified domain is available for purchase"
      },
      "post": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Domain names for which to check availability",
            "in": "body",
            "name": "domains",
            "required": true,
            "schema": {
              "items": {
                "type": "string"
              },
              "maximum": 500,
              "type": "array"
            }
          },
          {
            "default": "FAST",
            "description": "Optimize for time ('FAST') or accuracy ('FULL')",
            "enum": [
              "FAST",
              "FULL",
              "fast",
              "full"
            ],
            "in": "query",
            "name": "checkType",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/DomainAvailableBulk"
            }
          },
          "203": {
            "description": "Request was partially successful",
            "schema": {
              "$ref": "#/definitions/DomainAvailableBulkMixed"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Cannot convert domain label error<br>Domain is missing IDN script<br>Domain segment ends with dash<br>Domain starts with dash<br>Domain uses unsupported IDN script<br>FQDN fails generic validity regex<br>Invalid character(s) error<br>Invalid tld error<br>Non-IDN domain name must not have dashes at the third and fourth position<br>Reserved name error<br>Reserved name error<br>domain must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "availableBulk",
        "summary": "Determine whether or not the specified domains are available for purchase"
      }
    },
    "/v1/domains/contacts/validate": {
      "post": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "default": 1,
            "description": "PrivateLabelId to operate as, if different from JWT",
            "in": "header",
            "name": "X-Private-Label-Id",
            "required": false,
            "type": "integer"
          },
          {
            "default": "en-US",
            "description": "MarketId in which the request is being made, and for which responses should be localized",
            "format": "bcp-47",
            "in": "query",
            "name": "marketId",
            "required": false,
            "type": "string"
          },
          {
            "description": "An instance document expected for domains contacts validation",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DomainsContactsBulk"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No response was specified"
          },
          "204": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Request body doesn't fulfill schema, see details in `fields`",
            "schema": {
              "$ref": "#/definitions/ErrorDomainContactsValidate"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "All contacts specified in request will be validated against all domains specifed in \"domains\". As an alternative, you can also pass in tlds, with the exception of `uk`, which requires full domain names",
        "operationId": "ContactsValidate",
        "summary": "Validate the request body using the Domain Contact Validation Schema for specified domains."
      }
    },
    "/v1/domains/purchase": {
      "post": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "The Shopper for whom the domain should be purchased",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "An instance document expected to match the JSON schema returned by `./schema/{tld}`",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DomainPurchase"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/DomainPurchaseResponse"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "domain must be specified<br>Based on restrictions declared in JSON schema returned by `./schema/{tld}`<br>Cannot convert domain label error<br>Domain is missing IDN script<br>Domain segment ends with dash<br>Domain starts with dash<br>Domain uses unsupported IDN script<br>FQDN fails generic validity regex<br>Invalid character(s) error<br>Invalid tld error<br>Non-IDN domain name must not have dashes at the third and fourth position<br>Reserved name error<br>`body` must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "purchase",
        "summary": "Purchase and register the specified Domain"
      }
    },
    "/v1/domains/purchase/schema/{tld}": {
      "get": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "The Top-Level Domain whose schema should be retrieved",
            "in": "path",
            "name": "tld",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/JsonSchema"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`tld` must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "schema",
        "summary": "Retrieve the schema to be submitted when registering a Domain for the specified TLD"
      }
    },
    "/v1/domains/purchase/validate": {
      "post": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "An instance document expected to match the JSON schema returned by `./schema/{tld}`",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DomainPurchase"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Based on restrictions declared in JSON schema returned by `./schema/{tld}`",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "validate",
        "summary": "Validate the request body using the Domain Purchase Schema for the specified TLD"
      }
    },
    "/v1/domains/suggest": {
      "get": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID for which the suggestions are being generated",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain name or set of keywords for which alternative domain names will be suggested",
            "in": "query",
            "name": "query",
            "required": false,
            "type": "string"
          },
          {
            "description": "Two-letter ISO country code to be used as a hint for target region<br/><br/>\nNOTE: These are sample values, there are many\n<a href=\"http://www.iso.org/iso/country_codes.htm\">more</a>",
            "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",
            "in": "query",
            "name": "country",
            "required": false,
            "type": "string"
          },
          {
            "description": "Name of city to be used as a hint for target region",
            "format": "city-name",
            "in": "query",
            "name": "city",
            "required": false,
            "type": "string"
          },
          {
            "description": "Sources to be queried<br/><br/><ul>\n<li><strong>CC_TLD</strong> - Varies the TLD using Country Codes</li>\n<li><strong>EXTENSION</strong> - Varies the TLD</li>\n<li><strong>KEYWORD_SPIN</strong> - Identifies keywords and then rotates each one</li>\n<li><strong>PREMIUM</strong> - Includes variations with premium prices</li></ul>",
            "in": "query",
            "items": {
              "enum": [
                "CC_TLD",
                "EXTENSION",
                "KEYWORD_SPIN",
                "PREMIUM",
                "cctld",
                "extension",
                "keywordspin",
                "premium"
              ],
              "type": "string"
            },
            "name": "sources",
            "required": false,
            "type": "array"
          },
          {
            "description": "Top-level domains to be included in suggestions<br/><br/>\nNOTE: These are sample values, there are many\n<a href=\"http://www.godaddy.com/tlds/gtld.aspx#domain_search_form\">more</a>",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "tlds",
            "required": false,
            "type": "array"
          },
          {
            "description": "Maximum length of second-level domain",
            "in": "query",
            "name": "lengthMax",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Minimum length of second-level domain",
            "in": "query",
            "name": "lengthMin",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Maximum number of suggestions to return",
            "in": "query",
            "name": "limit",
            "required": false,
            "type": "integer"
          },
          {
            "default": 1000,
            "description": "Maximum amount of time, in milliseconds, to wait for responses\nIf elapses, return the results compiled up to that point",
            "format": "integer-positive",
            "in": "query",
            "name": "waitMs",
            "required": false,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "items": {
                "$ref": "#/definitions/DomainSuggestion"
              },
              "type": "array"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`query` must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "suggest",
        "summary": "Suggest alternate Domain names based on a seed Domain, a set of keywords, or the shopper's purchase history"
      }
    },
    "/v1/domains/tlds": {
      "get": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "items": {
                "$ref": "#/definitions/TldSummary"
              },
              "type": "array"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "tlds",
        "summary": "Retrieves a list of TLDs supported and enabled for sale"
      }
    },
    "/v1/domains/{domain}": {
      "delete": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Domain to cancel",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The domain does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Unknown domain error<br>At least two apex (aka @) `nameServers` must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "cancel",
        "summary": "Cancel a purchased domain"
      },
      "get": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID expected to own the specified domain",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain name whose details are to be retrieved",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/DomainDetail"
            }
          },
          "203": {
            "description": "Request was partially successful, see verifications.status for further detail",
            "schema": {
              "$ref": "#/definitions/DomainDetail"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`domain` must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "getDomain",
        "summary": "Retrieve details for the specified Domain"
      },
      "patch": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Domain whose details are to be updated",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          },
          {
            "description": "Shopper for whom Domain is to be updated. NOTE: This is only required if you are a Reseller managing a domain purchased outside the scope of your reseller account. For instance, if you're a Reseller, but purchased a Domain via http://www.godaddy.com",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Changes to apply to existing Domain",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DomainUpdate"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Specified Subaccount not owned by authenticated Shopper",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "The given domain is not eligible to have its nameservers changed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "At least two apex (aka @) `nameServers` must be specified<br>Failed to update nameservers",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "update",
        "summary": "Update details for the specified Domain"
      }
    },
    "/v1/domains/{domain}/contacts": {
      "patch": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper for whom domain contacts are to be updated. NOTE: This is only required if you are a Reseller managing a domain purchased outside the scope of your reseller account. For instance, if you're a Reseller, but purchased a Domain via http://www.godaddy.com",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain whose Contacts are to be updated.",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          },
          {
            "description": "Changes to apply to existing Contacts",
            "in": "body",
            "name": "contacts",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DomainContacts"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "No response was specified"
          },
          "204": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Domain not found<br>Identity document not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`domain` is not a valid Domain name",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "updateContacts",
        "summary": "Update domain"
      }
    },
    "/v1/domains/{domain}/privacy": {
      "delete": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID of the owner of the domain",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain whose privacy is to be cancelled",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The domain does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Customer has purchased Domain Ownership Protection and the domain has expired<br>The domain status does not allow performing the operation<br>Unknown domain error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "cancelPrivacy",
        "summary": "Submit a privacy cancellation request for the given domain"
      }
    },
    "/v1/domains/{domain}/privacy/purchase": {
      "post": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID of the owner of the domain",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain for which to purchase privacy",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          },
          {
            "description": "Options for purchasing privacy",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/PrivacyPurchase"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/DomainPurchaseResponse"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "The domain status does not allow performing the operation",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "End-user must read and consent to all of the following legal agreements<br>`domain` must match `sld.tld`",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "purchasePrivacy",
        "summary": "Purchase privacy for a specified domain"
      }
    },
    "/v1/domains/{domain}/records": {
      "patch": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID which owns the domain. NOTE: This is only required if you are a Reseller managing a domain purchased outside the scope of your reseller account. For instance, if you're a Reseller, but purchased a Domain via http://www.godaddy.com",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain whose DNS Records are to be augmented",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          },
          {
            "description": "DNS Records to add to whatever currently exists",
            "in": "body",
            "name": "records",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ArrayOfDNSRecord"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`domain` is not a valid Domain name",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "recordAdd",
        "summary": "Add the specified DNS Records to the specified Domain"
      },
      "put": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID which owns the domain. NOTE: This is only required if you are a Reseller managing a domain purchased outside the scope of your reseller account. For instance, if you're a Reseller, but purchased a Domain via http://www.godaddy.com",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain whose DNS Records are to be replaced",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          },
          {
            "description": "DNS Records to replace whatever currently exists",
            "in": "body",
            "name": "records",
            "required": true,
            "schema": {
              "items": {
                "$ref": "#/definitions/DNSRecord"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`domain` is not a valid Domain name<br>`record` does not fulfill the schema",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "recordReplace",
        "summary": "Replace all DNS Records for the specified Domain"
      }
    },
    "/v1/domains/{domain}/records/{type}/{name}": {
      "get": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID which owns the domain. NOTE: This is only required if you are a Reseller managing a domain purchased outside the scope of your reseller account. For instance, if you're a Reseller, but purchased a Domain via http://www.godaddy.com",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain whose DNS Records are to be retrieved",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          },
          {
            "description": "DNS Record Type for which DNS Records are to be retrieved",
            "enum": [
              "A",
              "AAAA",
              "CNAME",
              "MX",
              "NS",
              "SOA",
              "SRV",
              "TXT"
            ],
            "in": "path",
            "name": "type",
            "required": true,
            "type": "string"
          },
          {
            "description": "DNS Record Name for which DNS Records are to be retrieved",
            "in": "path",
            "name": "name",
            "required": true,
            "type": "string"
          },
          {
            "description": "Number of results to skip for pagination",
            "in": "query",
            "name": "offset",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Maximum number of items to return",
            "in": "query",
            "name": "limit",
            "required": false,
            "type": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "items": {
                "$ref": "#/definitions/DNSRecord"
              },
              "type": "array"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`record` does not fulfill the schema<br>`domain` is not a valid Domain name",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "recordGet",
        "summary": "Retrieve DNS Records for the specified Domain, optionally with the specified Type and/or Name"
      },
      "put": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID which owns the domain. NOTE: This is only required if you are a Reseller managing a domain purchased outside the scope of your reseller account. For instance, if you're a Reseller, but purchased a Domain via http://www.godaddy.com",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain whose DNS Records are to be replaced",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          },
          {
            "description": "DNS Record Type for which DNS Records are to be replaced",
            "enum": [
              "A",
              "AAAA",
              "CNAME",
              "MX",
              "NS",
              "SOA",
              "SRV",
              "TXT"
            ],
            "in": "path",
            "name": "type",
            "required": true,
            "type": "string"
          },
          {
            "description": "DNS Record Name for which DNS Records are to be replaced",
            "in": "path",
            "name": "name",
            "required": true,
            "type": "string"
          },
          {
            "description": "DNS Records to replace whatever currently exists",
            "in": "body",
            "name": "records",
            "required": true,
            "schema": {
              "items": {
                "$ref": "#/definitions/DNSRecordCreateTypeName"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`record` does not fulfill the schema",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "recordReplaceTypeName",
        "summary": "Replace all DNS Records for the specified Domain with the specified Type and Name"
      },
      "delete": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID which owns the domain. NOTE: This is only required if you are a Reseller managing a domain purchased outside the scope of your reseller account. For instance, if you're a Reseller, but purchased a Domain via http://www.godaddy.com",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain whose DNS Records are to be deleted",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          },
          {
            "description": "DNS Record Type for which DNS Records are to be deleted",
            "enum": [
              "A",
              "AAAA",
              "CNAME",
              "MX",
              "SRV",
              "TXT"
            ],
            "in": "path",
            "name": "type",
            "required": true,
            "type": "string"
          },
          {
            "description": "DNS Record Name for which DNS Records are to be deleted",
            "in": "path",
            "name": "name",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Domain not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "The given domain is not eligible to have its records changed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`domain` is not a valid Domain name",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "recordDeleteTypeName",
        "summary": "Delete all DNS Records for the specified Domain with the specified Type and Name"
      }
    },
    "/v1/domains/{domain}/records/{type}": {
      "put": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID which owns the domain. NOTE: This is only required if you are a Reseller managing a domain purchased outside the scope of your reseller account. For instance, if you're a Reseller, but purchased a Domain via http://www.godaddy.com",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain whose DNS Records are to be replaced",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          },
          {
            "description": "DNS Record Type for which DNS Records are to be replaced",
            "enum": [
              "A",
              "AAAA",
              "CNAME",
              "MX",
              "NS",
              "SOA",
              "SRV",
              "TXT"
            ],
            "in": "path",
            "name": "type",
            "required": true,
            "type": "string"
          },
          {
            "description": "DNS Records to replace whatever currently exists",
            "in": "body",
            "name": "records",
            "required": true,
            "schema": {
              "items": {
                "$ref": "#/definitions/DNSRecordCreateType"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`record` does not fulfill the schema",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "recordReplaceType",
        "summary": "Replace all DNS Records for the specified Domain with the specified Type"
      }
    },
    "/v1/domains/{domain}/renew": {
      "post": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper for whom Domain is to be renewed. NOTE: This is only required if you are a Reseller managing a domain purchased outside the scope of your reseller account. For instance, if you're a Reseller, but purchased a Domain via http://www.godaddy.com",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain to renew",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          },
          {
            "description": "Options for renewing existing Domain",
            "in": "body",
            "name": "body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/DomainRenew"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/DomainPurchaseResponse"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "The domain status does not allow performing the operation",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "End-user must read and consent to all of the following legal agreements<br>`domain` must match `sld.tld`",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "renew",
        "summary": "Renew the specified Domain"
      }
    },
    "/v1/domains/{domain}/transfer": {
      "post": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "The Shopper to whom the domain should be transfered",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain to transfer in",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          },
          {
            "description": "Details for domain transfer purchase",
            "in": "body",
            "name": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/DomainTransferIn"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/DomainPurchaseResponse"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "`domain` (domain) isn't available for transfer",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Based on restrictions declared in JSON schema returned by `./schema/{tld}`<br>Cannot convert domain label error<br>Domain is missing IDN script<br>Domain segment ends with dash<br>Domain starts with dash<br>Domain uses unsupported IDN script<br>End-user must read and consent to all of the following legal agreements<br>FQDN fails generic validity regex<br>Invalid character(s) error<br>Invalid period range<br>Invalid tld error<br>Non-IDN domain name must not have dashes at the third and fourth position<br>Reserved name error<br>`authCode` cannot be empty<br>`domain` must match `sld.tld`<br>domain must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "transferIn",
        "summary": "Purchase and start or restart transfer process"
      }
    },
    "/v1/domains/{domain}/verifyRegistrantEmail": {
      "post": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper for whom domain contact e-mail should be verified. NOTE: This is only required if you are a Reseller managing a domain purchased outside the scope of your reseller account. For instance, if you're a Reseller, but purchased a Domain via http://www.godaddy.com",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain whose Contact E-mail should be verified.",
            "in": "path",
            "name": "domain",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`domain` is not a valid Domain name",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "verifyEmail",
        "summary": "Re-send Contact E-mail Verification for specified Domain"
      }
    },
    "/v2/customers/{customerId}/domains/{domain}": {
      "get": {
        "tags": [
          "Domains"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Retrieve details for the specified Domain",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Domain name whose details are to be retrieved",
            "name": "domain",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "includes",
            "required": false,
            "in": "query",
            "type": "array",
            "items": {
              "enum": [
                "actions",
                "contacts",
                "dnssecRecords",
                "registryStatusCodes"
              ],
              "type": "string"
            },
            "description": "Optional details to be included in the response"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/DomainDetailV2"
            }
          },
          "203": {
            "description": "Request was partially successful, but actions, contacts, and/or verifications may not be included.",
            "schema": {
              "$ref": "#/definitions/DomainDetailV2"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The contact does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`domain` must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/redeem": {
      "post": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Purchase a restore for the given domain to bring it out of redemption",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Domain to request redeem for",
            "name": "domain",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "description": "Options for redeeming existing Domain",
            "name": "body",
            "in": "body",
            "required": false,
            "schema": {
              "$ref": "#/definitions/DomainRedeemV2"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Request Accepted. You may use GET /v2/customers/{customerId}/domains/{domain}/actions/REDEEM to poll status"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The domain does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "There is already a similar action processing",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Domain invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/transferOut": {
      "post": {
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Initiate transfer out to another registrar for a .uk domain.",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Domain to initiate the transfer out for",
            "name": "domain",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "description": "Registrar tag to push transfer to",
            "name": "registrar",
            "in": "query",
            "required": true,
            "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",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The domain does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "There is already a similar action processing",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Domain invalid. TLD must be .uk",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/forwards/{fqdn}": {
      "delete": {
        "description": "<strong>Notes:</strong><ul><li>**shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>",
        "tags": [
          "Domains"
        ],
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          },
          {
            "description": "The fully qualified domain name whose forwarding details are to be deleted.",
            "in": "path",
            "name": "fqdn",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "The domain status does not allow performing the operation",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "A valid `fqdn` must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "domainsForwardsDelete",
        "summary": "Submit a forwarding cancellation request for the given fqdn"
      },
      "get": {
        "description": "<strong>Notes:</strong><ul><li>**shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>",
        "tags": [
          "Domains"
        ],
        "consumes": [],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          },
          {
            "description": "The fully qualified domain name whose forwarding details are to be retrieved.",
            "in": "path",
            "name": "fqdn",
            "required": true,
            "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",
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "items": {
                "$ref": "#/definitions/DomainForwarding"
              },
              "type": "array"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "A valid `fqdn` must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "domainsForwardsGet",
        "summary": "Retrieve the forwarding information for the given fqdn"
      },
      "put": {
        "description": "<strong>Notes:</strong><ul><li>**shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>",
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          },
          {
            "description": "The fully qualified domain name whose forwarding details are to be modified.",
            "in": "path",
            "name": "fqdn",
            "required": true,
            "type": "string"
          },
          {
            "description": "Domain forwarding rule to create or replace on the fqdn",
            "name": "body",
            "required": true,
            "in": "body",
            "schema": {
              "$ref": "#/definitions/DomainForwardingCreate"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "The domain status does not allow performing the operation",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Request body doesn't fulfill schema, see details in `fields`",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "domainsForwardsPut",
        "summary": "Modify the forwarding information for the given fqdn"
      },
      "post": {
        "description": "<strong>Notes:</strong><ul><li>**shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>",
        "tags": [
          "Domains"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "The Customer identifier<br/> 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,
            "type": "string"
          },
          {
            "description": "The fully qualified domain name whose forwarding details are to be modified.",
            "in": "path",
            "name": "fqdn",
            "required": true,
            "type": "string"
          },
          {
            "description": "Domain forwarding rule to create for the specified fqdn",
            "name": "body",
            "required": true,
            "in": "body",
            "schema": {
              "$ref": "#/definitions/DomainForwardingCreate"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Provided `fqdn` already has forwarding setup",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Request body doesn't fulfill schema, see details in `fields`",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "domainsForwardsPost",
        "summary": "Create a new forwarding configuration for the given FQDN"
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/actions": {
      "get": {
        "tags": [
          "Actions"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Retrieves a list of the most recent actions for the specified domain",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Domain whose actions are to be retrieved",
            "name": "domain",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "items": {
                "$ref": "#/definitions/Action"
              },
              "type": "array"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The domain does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/{domain}/actions/{type}": {
      "delete": {
        "tags": [
          "Actions"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Cancel the most recent user action for the specified domain",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Domain whose action is to be cancelled",
            "name": "domain",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "description": "The type of action to cancel",
            "in": "path",
            "required": true,
            "type": "string",
            "enum": [
              "AUTH_CODE_PURCHASE",
              "AUTH_CODE_REGENERATE",
              "BACKORDER_PURCHASE",
              "BACKORDER_DELETE",
              "BACKORDER_UPDATE",
              "DNSSEC_CREATE",
              "DNSSEC_DELETE",
              "DOMAIN_DELETE",
              "DOMAIN_UPDATE",
              "DOMAIN_UPDATE_CONTACTS",
              "DOMAIN_UPDATE_NAME_SERVERS",
              "MIGRATE",
              "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_CANCEL",
              "TRANSFER_OUT_ACCEPT",
              "TRANSFER_OUT_REJECT",
              "TRANSFER_OUT_REQUESTED",
              "TRANSIT"
            ]
          }
        ],
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The domain does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "The action status does not allow performing the operation",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      },
      "get": {
        "tags": [
          "Actions"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Retrieves the most recent action for the specified domain",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Domain whose action is to be retrieved",
            "name": "domain",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "type",
            "description": "The type of action to retrieve",
            "in": "path",
            "required": true,
            "type": "string",
            "enum": [
              "AUTH_CODE_PURCHASE",
              "AUTH_CODE_REGENERATE",
              "AUTO_RENEWAL",
              "BACKORDER_PURCHASE",
              "BACKORDER_DELETE",
              "BACKORDER_UPDATE",
              "DNS_VERIFICATION",
              "DNSSEC_CREATE",
              "DNSSEC_DELETE",
              "DOMAIN_DELETE",
              "DOMAIN_UPDATE",
              "DOMAIN_UPDATE_CONTACTS",
              "DOMAIN_UPDATE_NAME_SERVERS",
              "EXPIRY",
              "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_CANCEL",
              "TRANSFER_OUT",
              "TRANSFER_OUT_ACCEPT",
              "TRANSFER_OUT_REJECT",
              "TRANSFER_OUT_REQUESTED",
              "TRANSIT"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/Action"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The domain does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "The domain status does not allow performing the operation",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/notifications": {
      "get": {
        "tags": [
          "Notifications"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Retrieve the next domain notification",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/DomainNotification"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The customer does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/notifications/optIn": {
      "get": {
        "tags": [
          "Notifications"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Retrieve a list of notification types that are opted in",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/DomainNotification"
              }
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The customer does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      },
      "put": {
        "tags": [
          "Notifications"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Opt in to recieve notifications for the submitted notification types",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          },
          {
            "name": "types",
            "description": "The notification types that should be opted in",
            "in": "query",
            "required": true,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "AUTH_CODE_PURCHASE",
                "AUTH_CODE_REGENERATE",
                "AUTO_RENEWAL",
                "BACKORDER",
                "BACKORDER_PURCHASE",
                "BACKORDER_DELETE",
                "BACKORDER_UPDATE",
                "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_CANCEL",
                "TRANSFER_OUT",
                "TRANSFER_OUT_ACCEPT",
                "TRANSFER_OUT_REJECT",
                "TRANSFER_OUT_REQUESTED",
                "TRANSIT"
              ]
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Command successful"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The customer does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`type` must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/notifications/schemas/{type}": {
      "get": {
        "tags": [
          "Notifications"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Retrieve the schema for the notification data for the specified notification type",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          },
          {
            "description": "The notification type whose schema should be retrieved",
            "name": "type",
            "in": "path",
            "required": true,
            "type": "string",
            "enum": [
              "AUTO_RENEWAL",
              "BACKORDER",
              "BACKORDER_PURCHASE",
              "EXPIRY",
              "PREMIUM",
              "PRIVACY_PURCHASE",
              "REDEEM",
              "REGISTER",
              "RENEW",
              "TRADE",
              "TRANSFER"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/JsonSchema"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The schema type does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`type` must be specified",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v2/customers/{customerId}/domains/notifications/{notificationId}/acknowledge": {
      "post": {
        "tags": [
          "Notifications"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Acknowledge a domain notification",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "description": "The Customer identifier<br/> 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 shopper id.",
            "in": "path",
            "name": "customerId",
            "required": true,
            "type": "string"
          },
          {
            "name": "notificationId",
            "description": "The notification ID to acknowledge",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Message acknowledged"
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The domain does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v2/domains/maintenances": {
      "get": {
        "tags": [
          "Domains"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Retrieve a list of upcoming system Maintenances",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "description": "Only include results with the selected `status` value.  Returns all results if omitted<br/><ul><li><strong style='margin-left: 12px;'>ACTIVE</strong> - The upcoming maintenance is active.</li><li><strong style='margin-left: 12px;'>CANCELLED</strong> - The upcoming maintenance has been cancelled.</li></ul>",
            "type": "string",
            "enum": [
              "ACTIVE",
              "CANCELLED"
            ]
          },
          {
            "name": "modifiedAtAfter",
            "required": false,
            "in": "query",
            "type": "string",
            "format": "iso-datetime",
            "description": "Only include results with `modifiedAt` after the supplied date"
          },
          {
            "name": "startsAtAfter",
            "required": false,
            "in": "query",
            "type": "string",
            "format": "iso-datetime",
            "description": "Only include results with `startsAt` after the supplied date"
          },
          {
            "name": "limit",
            "required": false,
            "in": "query",
            "type": "integer",
            "default": 100,
            "minimum": 1,
            "maximum": 100,
            "description": "Maximum number of results to return"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/Maintenance"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Filter parameters don't match schema and/or restrictions",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v2/domains/maintenances/{maintenanceId}": {
      "get": {
        "tags": [
          "Domains"
        ],
        "produces": [
          "application/json"
        ],
        "summary": "Retrieve the details for an upcoming system Maintenances",
        "parameters": [
          {
            "name": "X-Request-Id",
            "required": false,
            "in": "header",
            "type": "string",
            "description": "A client provided identifier for tracking this request."
          },
          {
            "name": "maintenanceId",
            "in": "path",
            "required": true,
            "description": "The identifier for the system maintenance",
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/MaintenanceDetail"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "The maintenance does not exist",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v1/orders": {
      "get": {
        "tags": [
          "Orders"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Start of range indicating what time-frame should be returned. Inclusive",
            "in": "query",
            "name": "periodStart",
            "required": false,
            "type": "string"
          },
          {
            "description": "End of range indicating what time-frame should be returned. Inclusive",
            "in": "query",
            "name": "periodEnd",
            "required": false,
            "type": "string"
          },
          {
            "description": "Domain name to use as the filter of results",
            "in": "query",
            "name": "domain",
            "required": false,
            "type": "string"
          },
          {
            "description": "Product group id to use as the filter of results",
            "in": "query",
            "name": "productGroupId",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Payment profile id to use as the filter of results",
            "in": "query",
            "name": "paymentProfileId",
            "required": false,
            "type": "integer"
          },
          {
            "description": "Parent order id to use as the filter of results",
            "in": "query",
            "name": "parentOrderId",
            "required": false,
            "type": "string"
          },
          {
            "default": 0,
            "description": "Number of results to skip for pagination",
            "in": "query",
            "name": "offset",
            "required": false,
            "type": "integer"
          },
          {
            "default": 25,
            "description": "Maximum number of items to return",
            "in": "query",
            "maximum": 10000,
            "minimum": 1,
            "name": "limit",
            "required": false,
            "type": "integer"
          },
          {
            "default": "-createdAt",
            "description": "Property name that will be used to sort results. '-' indicates descending",
            "enum": [
              "createdAt",
              "-createdAt",
              "orderId",
              "-orderId",
              "pricing.total",
              "-pricing.total"
            ],
            "in": "query",
            "name": "sort",
            "required": false,
            "type": "string"
          },
          {
            "description": "Shopper ID to be operated on, if different from JWT<br/><b>Reseller subaccounts are not supported</b>",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "default": "en-US",
            "description": "Unique identifier of the Market in which the request is happening",
            "in": "header",
            "name": "X-Market-Id",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/OrderList"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "<strong>API Resellers</strong><ul><li>This endpoint does not support subaccounts and therefore API Resellers should not supply an X-Shopper-Id header</li></ul>",
        "operationId": "listOrders",
        "summary": "Retrieve a list of orders for the authenticated shopper. Only one filter may be used at a time"
      }
    },
    "/v1/orders/{orderId}": {
      "get": {
        "tags": [
          "Orders"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Order id whose details are to be retrieved",
            "in": "path",
            "name": "orderId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Shopper ID to be operated on, if different from JWT<br/><b>Reseller subaccounts are not supported</b>",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "default": "en-US",
            "description": "Unique identifier of the Market in which the request is happening",
            "in": "header",
            "name": "X-Market-Id",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/Order"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "<strong>API Resellers</strong><ul><li>This endpoint does not support subaccounts and therefore API Resellers should not supply an X-Shopper-Id header</li></ul>",
        "operationId": "get",
        "summary": "Retrieve details for specified order"
      }
    },
    "/v1/customers/{customerId}/parking/metrics": {
      "get": {
        "tags": [
          "Parking"
        ],
        "summary": "Returns a list of parking metrics for the specified customer, using specified filters",
        "operationId": "getMetrics",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "An identifier for a customer. A special alias MY is supported when accessing the authenticated customer's own data",
            "required": true,
            "type": "string"
          },
          {
            "name": "periodStartPtz",
            "in": "query",
            "description": "Start of range indicating what time-frame should be returned, ***inclusive***. ISO 8601 date `YYYY-MM-DD` in PT. Default value is the day before current date",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "periodEndPtz",
            "in": "query",
            "description": "End of range indicating what time-frame should be returned, ***inclusive***. ISO 8601 date `YYYY-MM-DD` in PT. Default value is the day before current date",
            "required": false,
            "type": "string",
            "format": "date"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of items to return",
            "required": false,
            "type": "integer",
            "default": 20,
            "maximum": 200,
            "minimum": 1
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of results to skip for pagination",
            "required": false,
            "type": "integer",
            "default": 0,
            "minimum": 0
          },
          {
            "name": "X-Request-Id",
            "in": "header",
            "description": "A unique identifier for the request",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/MetricList"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Required parameters must be specified in correct format",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v1/customers/{customerId}/parking/metricsByDomain": {
      "get": {
        "tags": [
          "Parking"
        ],
        "summary": "Returns a list of domain metrics for the specified customer and portfolio, using specified filters",
        "operationId": "getMetricsByDomain",
        "parameters": [
          {
            "name": "customerId",
            "in": "path",
            "description": "An identifier for a customer. A special alias MY is supported when accessing the authenticated customer's own data",
            "required": true,
            "type": "string"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Start of range indicating what time-frame should be returned, inclusive. ISO 8601 date YYYY-MM-DD",
            "required": true,
            "type": "string",
            "format": "date"
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "End of range indicating what time-frame should be returned, inclusive. ISO 8601 date YYYY-MM-DD",
            "required": true,
            "type": "string",
            "format": "date"
          },
          {
            "name": "domains",
            "in": "query",
            "description": "An array of domains to filter the results. If this filter is not provided, all domains will be returned",
            "required": false,
            "type": "string"
          },
          {
            "name": "domainLike",
            "in": "query",
            "description": "represent search keyword filtering domains. If not null, `domains` will be ignored",
            "required": false,
            "type": "string"
          },
          {
            "name": "portfolioId",
            "in": "query",
            "description": "Unique identifier for the portfolio to filter the results. If not provided, all domains within all porfolios will be returned",
            "required": false,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of items to return",
            "required": false,
            "type": "integer",
            "default": 20,
            "maximum": 200,
            "minimum": 1
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Number of results to skip for pagination",
            "required": false,
            "type": "integer",
            "default": 0,
            "minimum": 0
          },
          {
            "name": "X-Request-Id",
            "in": "header",
            "description": "A unique identifier for the request",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/MetricByDomainList"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Required parameters must be specified in correct format",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        }
      }
    },
    "/v1/shoppers/subaccount": {
      "post": {
        "tags": [
          "Shoppers"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "The subaccount to create",
            "in": "body",
            "name": "subaccount",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SubaccountCreate"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/ShopperId"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`subaccount` does not fulfill the schema",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "createSubaccount",
        "summary": "Create a Subaccount owned by the authenticated Reseller"
      }
    },
    "/v1/shoppers/{shopperId}": {
      "get": {
        "description": "<strong>Notes:</strong><ul><li>**shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>",
        "tags": [
          "Shoppers"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper whose details are to be retrieved",
            "in": "path",
            "name": "shopperId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Additional properties to be included in the response shopper object",
            "in": "query",
            "name": "includes",
            "type": "array",
            "collectionFormat": "csv",
            "items": {
              "type": "string",
              "enum": [
                "customerId"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/Shopper"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "getShopper",
        "summary": "Get details for the specified Shopper"
      },
      "post": {
        "description": "<strong>Notes:</strong><ul><li>**shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>",
        "tags": [
          "Shoppers"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "The ID of the Shopper to update",
            "in": "path",
            "name": "shopperId",
            "required": true,
            "type": "string"
          },
          {
            "description": "The Shopper details to update",
            "in": "body",
            "name": "shopper",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ShopperUpdate"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/ShopperId"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "`Shopper` does not fulfill the schema",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "updateShopper",
        "summary": "Update details for the specified Shopper"
      },
      "delete": {
        "description": "<strong>Notes:</strong><ul><li>Shopper deletion is not supported in OTE</li><li>**shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>",
        "tags": [
          "Shoppers"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "The ID of the shopper to delete. Must agree with the shopper id on the token or header, if present. *Note*: **shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)",
            "in": "path",
            "name": "shopperId",
            "maxLength": 10,
            "required": true,
            "type": "string"
          },
          {
            "description": "The client IP of the user who originated the request leading to this call.",
            "in": "query",
            "name": "auditClientIp",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "409": {
            "description": "Active and locked shoppers cannot be deleted",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Shopper ID is not supplied or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "delete",
        "summary": "Request the deletion of a shopper profile"
      }
    },
    "/v1/shoppers/{shopperId}/status": {
      "get": {
        "description": "<strong>Notes:</strong><ul><li>**shopperId** is **not the same** as **customerId**. **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>",
        "tags": [
          "Shoppers"
        ],
        "consumes": [],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "The ID of the shopper to retrieve. Must agree with the shopper id on the token or header, if present",
            "in": "path",
            "name": "shopperId",
            "maxLength": 10,
            "required": true,
            "type": "string"
          },
          {
            "description": "The client IP of the user who originated the request leading to this call.",
            "in": "query",
            "name": "auditClientIp",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/ShopperStatus"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Shopper ID is not supplied or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "getStatus",
        "summary": "Get details for the specified Shopper"
      }
    },
    "/v1/shoppers/{shopperId}/factors/password": {
      "put": {
        "description": "<strong>Notes:</strong><ul><li>Password set is only supported by API Resellers setting subaccount passwords.</li><li>**shopperId** is **not the same** as **customerId**.  **shopperId** is a number of max length 10 digits (*ex:* 1234567890) whereas **customerId** is a UUIDv4 (*ex:* 295e3bc3-b3b9-4d95-aae5-ede41a994d13)</li></ul>",
        "tags": [
          "Shoppers"
        ],
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "description": "Shopper whose password will be set",
            "in": "path",
            "name": "shopperId",
            "required": true,
            "type": "string"
          },
          {
            "description": "The value to set the subaccount's password to",
            "in": "body",
            "name": "secret",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Secret"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/ShopperId"
            }
          },
          "400": {
            "description": "Request was not successful",
            "schema": {
              "$ref": "#/definitions/PasswordError"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "changePassword",
        "summary": "Set subaccount's password"
      }
    },
    "/v1/subscriptions": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID to return subscriptions for when not using JWT",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "default": "en-US",
            "description": "The market that the response should be formatted for",
            "in": "header",
            "name": "X-Market-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Only return Subscriptions with the specified product groups",
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "productGroupKeys",
            "required": false,
            "type": "array"
          },
          {
            "description": "Optional details to be included in the response",
            "enum": [
              "addons",
              "relations"
            ],
            "in": "query",
            "items": {
              "type": "string"
            },
            "name": "includes",
            "required": false,
            "type": "array"
          },
          {
            "default": 0,
            "description": "Number of Subscriptions to skip before starting to return paged results (must be a multiple of the limit)",
            "in": "query",
            "name": "offset",
            "required": false,
            "type": "integer"
          },
          {
            "default": 25,
            "description": "Number of Subscriptions to retrieve in this page, starting after offset",
            "in": "query",
            "maximum": 2000,
            "minimum": 1,
            "name": "limit",
            "required": false,
            "type": "integer"
          },
          {
            "default": "-expiresAt",
            "description": "Property name that will be used to sort results. \"-\" indicates descending",
            "enum": [
              "expiresAt",
              "-expiresAt"
            ],
            "in": "query",
            "name": "sort",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/SubscriptionList"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Invalid query parameter (custom message returned for each parameter)",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "list",
        "summary": "Retrieve a list of Subscriptions for the specified Shopper"
      }
    },
    "/v1/subscriptions/productGroups": {
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID to return data for when not using JWT",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "default": "en-US",
            "description": "The market that the response should be formatted for",
            "in": "header",
            "name": "X-Market-Id",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "items": {
                "$ref": "#/definitions/ProductGroup"
              },
              "type": "array"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "productGroups",
        "summary": "Retrieve a list of ProductGroups for the specified Shopper"
      }
    },
    "/v1/subscriptions/{subscriptionId}": {
      "delete": {
        "tags": [
          "Subscriptions"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID to cancel subscriptions for when not using JWT",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Unique identifier of the Subscription to cancel",
            "in": "path",
            "name": "subscriptionId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Failed to determine if the domain is protected (invalid domain ID)<br>Invalid Subscription Id<br>The Office 365 Subscription cannot be cancelled (shopper is migrating)<br>The Subscription cannot be cancelled<br>The Subscription cannot be cancelled (PFID is disabled for cancellation)<br>The Subscription cannot be cancelled (domain is protected)<br>The domain alert Subscription cannot be cancelled",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Failed to determine if the Office 365 account is migrating<br>Failed to determine if the domain alert is cancellable<br>Failed to determine if the domain is protected<br>Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "cancelSubscription",
        "summary": "Cancel the specified Subscription"
      },
      "get": {
        "tags": [
          "Subscriptions"
        ],
        "consumes": [
          "application/json",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/javascript",
          "application/xml",
          "text/javascript",
          "text/xml"
        ],
        "parameters": [
          {
            "description": "Shopper ID to be operated on, if different from JWT",
            "in": "header",
            "name": "X-Shopper-Id",
            "required": false,
            "type": "string"
          },
          {
            "default": "en-US",
            "description": "Unique identifier of the Market in which the request is happening",
            "in": "header",
            "name": "X-Market-Id",
            "required": false,
            "type": "string"
          },
          {
            "description": "Unique identifier of the Subscription to retrieve",
            "in": "path",
            "name": "subscriptionId",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "Request was successful",
            "schema": {
              "$ref": "#/definitions/Subscription"
            }
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Resource not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "422": {
            "description": "Invalid Subscription Id",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "429": {
            "description": "Too many requests received within interval",
            "schema": {
              "$ref": "#/definitions/ErrorLimit"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "504": {
            "description": "Gateway timeout",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "operationId": "getSubscription",
        "summary": "Retrieve details for the specified Subscription"
      },
      "patch": {
        "tags": [
          "Subscriptions"
        ],
        "consumes": [
          "application/json",
          "application/x-www-form-urlencoded",
          "application/xml",
          "text/xml"
        ],
        "produces": [
          "application/json",
          "application/xml"
        ],
        "parameters": [
          {
            "description": "Unique identifier of the Subscription to update",
            "in": "path",
            "name": "subscriptionId",
            "required": true,
            "type": "string"
          },
          {
            "description": "Details of the Subscription to change",
            "in": "body",
            "name": "subscription",
            "required": true,
            "schema": {
              "$ref": "#/definitions/SubscriptionUpdate"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Request was successful"
          },
          "400": {
            "description": "Request was malformed",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "401": {
            "description": "Authentication info not sent or invalid",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "403": {
            "description": "Authenticated user is not allowed access <br> This method only supports JWT authentication",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "404": {
            "description": "Subscription not found <br> Payment profile not found",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          },
          "500": {
            "description": "Internal server error",
            "schema": {
              "$ref": "#/definitions/Error"
            }
          }
        },
        "description": "Only Subscription properties that can be changed without immediate financial impact can be modified via PATCH, whereas some properties can be changed by purchasing a renewal<br/><strong>This endpoint only supports JWT authentication</strong>",
        "operationId": "updateSubscription",
        "summary": "Update details for the specified Subscription"
      }
    }
  },
  "parameters": {
    "customerId": {
      "name": "customerId",
      "description": "An identifier for a customer",
      "in": "path",
      "required": true,
      "type": "string"
    },
    "certificateId": {
      "description": "Certificate id to lookup",
      "in": "path",
      "name": "certificateId",
      "required": true,
      "type": "string"
    },
    "domain": {
      "in": "path",
      "name": "domain",
      "type": "string",
      "format": "domain",
      "description": "A valid domain name in the certificate request",
      "required": true
    },
    "offset": {
      "name": "offset",
      "required": false,
      "in": "query",
      "type": "integer",
      "format": "integer-positive",
      "pattern": "^[0-9]+$",
      "description": "Number of results to skip for pagination"
    },
    "limit": {
      "name": "limit",
      "required": false,
      "in": "query",
      "type": "integer",
      "format": "integer-positive",
      "pattern": "^[0-9]+$",
      "description": "Maximum number of items to return"
    }
  },
  "responses": {
    "401": {
      "description": "Authentication info not sent or is invalid",
      "x-error-codes": [
        "UNAUTHORIZED"
      ],
      "schema": {
        "$ref": "#/definitions/Error"
      }
    },
    "403": {
      "description": "Authenticated user is not allowed access",
      "x-error-codes": [
        "ACCESS_DENIED"
      ],
      "schema": {
        "$ref": "#/definitions/Error"
      }
    },
    "404": {
      "description": "Resource not found",
      "x-error-codes": [
        "NOT_FOUND"
      ],
      "schema": {
        "$ref": "#/definitions/Error"
      }
    },
    "422": {
      "description": "Application-specific request error",
      "x-error-codes": [
        "INVALID_INPUT"
      ],
      "schema": {
        "$ref": "#/definitions/Error"
      }
    },
    "429": {
      "description": "Too many requests received within interval",
      "x-error-codes": [
        "RATE_LIMITED"
      ],
      "schema": {
        "$ref": "#/definitions/ErrorLimit"
      }
    },
    "500": {
      "description": "Internal server error",
      "x-error-codes": [
        "INTERNAL_SERVER_ERROR"
      ],
      "schema": {
        "$ref": "#/definitions/Error"
      }
    }
  },
  "definitions": {
    "AftermarketListingAction": {
      "properties": {
        "listingActionId": {
          "description": "Action Id",
          "type": "integer"
        }
      },
      "required": [
        "listingActionId"
      ]
    },
    "AftermarketListingExpiryCreate": {
      "properties": {
        "domain": {
          "description": "Domain name",
          "type": "string"
        },
        "expiresAt": {
          "description": "Date when the domain expires",
          "format": "iso-datetime",
          "type": "string"
        },
        "losingRegistrarId": {
          "default": 1,
          "description": "Losing registrar id for the domain",
          "minimum": 1,
          "type": "integer"
        },
        "pageViewsMonthly": {
          "description": "Monthly traffic page view for the domain",
          "type": "integer"
        },
        "revenueMonthly": {
          "description": "Monthly parking revenue (in USD micro unit) for the domain",
          "type": "integer"
        }
      },
      "required": [
        "domain",
        "expiresAt",
        "losingRegistrarId"
      ]
    },
    "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": "#/definitions/ErrorField"
          },
          "type": "array"
        },
        "message": {
          "description": "Human-readable, English description of the error",
          "type": "string"
        }
      },
      "required": [
        "code"
      ]
    },
    "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": "<ul>\n<li style='margin-left: 12px;'>JSONPath referring to a field containing an error</li>\n<strong style='margin-left: 12px;'>OR</strong>\n<li style='margin-left: 12px;'>JSONPath referring to a field that refers to an object containing an error, with more detail in `pathRelated`</li>\n</ul>",
          "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"
      ]
    },
    "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": "#/definitions/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"
      ]
    },
    "expiry": {
      "properties": {
        "id": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "AbuseTicket": {
      "description": "The associated fields returned, given a unique abuse ticket id",
      "properties": {
        "closed": {
          "default": false,
          "description": "Is this abuse ticket closed?",
          "type": "boolean"
        },
        "closedAt": {
          "description": "The date the abuse ticket was closed",
          "format": "iso-datetime",
          "type": "string"
        },
        "createdAt": {
          "description": "The date the abuse ticket was created",
          "format": "iso-datetime",
          "type": "string"
        },
        "domainIp": {
          "description": "The domain or IP the suspected abuse was reported against",
          "type": "string"
        },
        "reporter": {
          "description": "The shopper id of the person who reported the suspected abuse",
          "type": "string"
        },
        "source": {
          "description": "The single URL or IP the suspected abuse was reported against",
          "type": "string"
        },
        "target": {
          "description": "The company the suspected abuse is targeting",
          "type": "string"
        },
        "ticketId": {
          "description": "Abuse ticket ID",
          "type": "string"
        },
        "type": {
          "description": "The type of abuse being reported",
          "enum": [
            "A_RECORD",
            "CHILD_ABUSE",
            "CONTENT",
            "FRAUD_WIRE",
            "IP_BLOCK",
            "MALWARE",
            "NETWORK_ABUSE",
            "PHISHING",
            "SPAM"
          ],
          "type": "string"
        }
      },
      "required": [
        "ticketId",
        "reporter",
        "domainIp",
        "closed",
        "type",
        "target",
        "source",
        "createdAt",
        "closedAt"
      ]
    },
    "AbuseTicketCreate": {
      "properties": {
        "info": {
          "description": "Additional information that may assist the abuse investigator. ie: server logs or email headers/body for SPAM",
          "type": "string"
        },
        "infoUrl": {
          "description": "Reporter URL if housing additional information that may assist the abuse investigator",
          "format": "url",
          "type": "string"
        },
        "intentional": {
          "default": false,
          "description": "Do you believe this is intentional abuse by the domain holder?",
          "type": "boolean"
        },
        "proxy": {
          "description": "The Proxy information required to view the abuse being reported. ie: Specific IP used, or country of IP viewing from",
          "type": "string"
        },
        "source": {
          "description": "The URL or IP where live abuse content is located at. ie: https://www.example.com/bad_stuff/bad.php",
          "type": "string"
        },
        "target": {
          "description": "The brand/company the abuse is targeting. ie: brand name/bank name",
          "type": "string"
        },
        "type": {
          "description": "The type of abuse being reported.",
          "enum": [
            "A_RECORD",
            "CHILD_ABUSE",
            "CONTENT",
            "FRAUD_WIRE",
            "IP_BLOCK",
            "MALWARE",
            "NETWORK_ABUSE",
            "PHISHING",
            "SPAM"
          ],
          "type": "string"
        }
      }
    },
    "AbuseTicketId": {
      "description": "The primary key of a newly created abuse ticket",
      "properties": {
        "u_number": {
          "description": "Abuse ticket ID",
          "type": "string"
        }
      },
      "required": [
        "ticketId"
      ]
    },
    "AbuseTicketList": {
      "properties": {
        "pagination": {
          "$ref": "#/definitions/Pagination"
        },
        "ticketIds": {
          "description": "A list of abuse ticket ids originated by this reporter.",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "ticketIds"
      ]
    },
    "Pagination": {
      "properties": {
        "first": {
          "description": "Optional link to first list of results",
          "type": "string"
        },
        "last": {
          "description": "Optional link to last list of results",
          "type": "string"
        },
        "next": {
          "description": "Optional link to next list of results",
          "type": "string"
        },
        "previous": {
          "description": "Optional link to previous list of results",
          "type": "string"
        },
        "total": {
          "description": "Number of records available",
          "type": "integer"
        }
      }
    },
    "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"
      ]
    },
    "Certificate": {
      "properties": {
        "certificateId": {
          "description": "The unique identifier of the certificate request. Only present if no errors returned",
          "type": "string"
        },
        "commonName": {
          "description": "Common name of certificate",
          "type": "string"
        },
        "contact": {
          "$ref": "#/definitions/CertificateContact",
          "description": "Requestor contact information"
        },
        "createdAt": {
          "description": "The date the certificate was ordered.",
          "format": "iso-datetime",
          "type": "string"
        },
        "deniedReason": {
          "description": "Only present if certificate order has been denied",
          "type": "string"
        },
        "organization": {
          "$ref": "#/definitions/CertificateOrganization",
          "description": "Organization Name in certificate"
        },
        "period": {
          "description": "Validity period of order. Specified in years",
          "type": "integer"
        },
        "productType": {
          "description": "Certificate product type",
          "enum": [
            "DV_SSL",
            "DV_WILDCARD_SSL",
            "EV_SSL",
            "OV_CS",
            "OV_DS",
            "OV_SSL",
            "OV_WILDCARD_SSL",
            "UCC_DV_SSL",
            "UCC_EV_SSL",
            "UCC_OV_SSL"
          ],
          "type": "string"
        },
        "progress": {
          "description": "Percentage of completion for certificate vetting",
          "type": "integer"
        },
        "revokedAt": {
          "description": "The revocation date of certificate (if revoked).",
          "format": "iso-datetime",
          "type": "string"
        },
        "rootType": {
          "description": "Root Type",
          "enum": [
            "GODADDY_SHA_1",
            "GODADDY_SHA_2",
            "STARFIELD_SHA_1",
            "STARFIELD_SHA_2"
          ],
          "type": "string"
        },
        "serialNumber": {
          "description": "Serial number of certificate (if issued or revoked)",
          "type": "string"
        },
        "serialNumberHex": {
          "description": "Hexadecmial format for Serial number of certificate(if issued or revoked)",
          "type": "string"
        },
        "slotSize": {
          "description": "Number of subject alternative names(SAN) to be included in certificate ",
          "enum": [
            "FIVE",
            "TEN",
            "FIFTEEN",
            "TWENTY",
            "THIRTY",
            "FOURTY",
            "FIFTY",
            "ONE_HUNDRED"
          ],
          "type": "string"
        },
        "status": {
          "description": "Status of certificate",
          "enum": [
            "PENDING_ISSUANCE",
            "ISSUED",
            "REVOKED",
            "CANCELED",
            "DENIED",
            "PENDING_REVOCATION",
            "PENDING_REKEY",
            "UNUSED",
            "EXPIRED"
          ],
          "type": "string"
        },
        "subjectAlternativeNames": {
          "description": "Contains subject alternative names set",
          "items": {
            "$ref": "#/definitions/SubjectAlternativeNameDetails"
          },
          "type": "array"
        },
        "validEnd": {
          "description": "The end date of the certificate's validity (if issued or revoked).",
          "format": "iso-datetime",
          "type": "string"
        },
        "validStart": {
          "description": "The start date of the certificate's validity (if issued or revoked).",
          "format": "iso-datetime",
          "type": "string"
        }
      },
      "required": [
        "certificateId",
        "status",
        "contact",
        "period",
        "createdAt",
        "productType"
      ]
    },
    "ArrayOfCertificateAction": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/CertificateAction"
      }
    },
    "CertificateAction": {
      "properties": {
        "createdAt": {
          "description": "Date action created",
          "format": "iso-datetime",
          "type": "string"
        },
        "type": {
          "enum": [
            "CERTIFICATE_ISSUED",
            "CERTIFICATE_ORDER_CANCELED",
            "CERTIFICATE_ORDER_CREATED",
            "CERTIFICATE_REVOKED",
            "DOMAIN_VALIDATION_COMPLETE",
            "FRAUD_DETECTED",
            "ORG_NAME_CHANGE",
            "ORG_VALIDATION_COMPLETE",
            "SAN_DROP"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "createdAt"
      ]
    },
    "CertificateAddress": {
      "properties": {
        "address1": {
          "description": "Address line 1 of organization address",
          "type": "string"
        },
        "address2": {
          "description": "Address line 2 of organization address",
          "type": "string"
        },
        "city": {
          "description": "City/Locality of organization address",
          "type": "string"
        },
        "country": {
          "description": "Two character country code of organization",
          "enum": [
            "AC",
            "AD",
            "AE",
            "AF",
            "AG",
            "AI",
            "AL",
            "AM",
            "AN",
            "AO",
            "AQ",
            "AR",
            "AS",
            "AT",
            "AU",
            "AW",
            "AZ",
            "BA",
            "BB",
            "BD",
            "BE",
            "BF",
            "BG",
            "BH",
            "BI",
            "BJ",
            "BM",
            "BN",
            "BO",
            "BR",
            "BS",
            "BT",
            "BV",
            "BW",
            "BY",
            "BZ",
            "CA",
            "CC",
            "CD",
            "CF",
            "CG",
            "CH",
            "CI",
            "CK",
            "CL",
            "CM",
            "CN",
            "CO",
            "CR",
            "CV",
            "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",
            "KW",
            "KY",
            "KZ",
            "LA",
            "LB",
            "LC",
            "LI",
            "LK",
            "LR",
            "LS",
            "LT",
            "LU",
            "LV",
            "LY",
            "MA",
            "MC",
            "MD",
            "ME",
            "MG",
            "MH",
            "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",
            "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",
            "YU",
            "ZA",
            "ZM",
            "ZW"
          ],
          "format": "iso-country-code",
          "type": "string"
        },
        "postalCode": {
          "description": "Postal code of organization address",
          "type": "string"
        },
        "state": {
          "description": "Full name of State/Province/Territory of organization address",
          "type": "string"
        }
      },
      "required": [
        "address1",
        "country"
      ]
    },
    "CertificateBundle": {
      "properties": {
        "pems": {
          "$ref": "#/definitions/PEMCertificates",
          "description": "Certificates in PEM format"
        },
        "serialNumber": {
          "description": "Serial number of certificate requested",
          "type": "string"
        }
      },
      "required": [
        "serialNumber",
        "pems"
      ]
    },
    "CertificateCallback": {
      "properties": {
        "callbackUrl": {
          "description": "Callback url registered to receive stateful actions",
          "type": "string"
        }
      },
      "required": [
        "callbackUrl"
      ]
    },
    "CertificateContact": {
      "properties": {
        "email": {
          "description": "Email address of requestor contact",
          "type": "string"
        },
        "jobTitle": {
          "description": "Only used for EVSSL. Job title of requestor contact",
          "type": "string"
        },
        "nameFirst": {
          "description": "First name of requestor contact",
          "type": "string"
        },
        "nameLast": {
          "description": "Last name of requestor contact",
          "type": "string"
        },
        "nameMiddle": {
          "description": "Middle initial of requestor contact",
          "type": "string"
        },
        "phone": {
          "description": "Phone number for requestor contact",
          "type": "string"
        },
        "suffix": {
          "description": "Suffix of requestor contact",
          "type": "string"
        }
      },
      "required": [
        "nameFirst",
        "nameLast",
        "email",
        "phone"
      ]
    },
    "CertificateCreate": {
      "properties": {
        "callbackUrl": {
          "description": "Required if client would like to receive stateful actions via callback during certificate lifecyle",
          "type": "string"
        },
        "commonName": {
          "description": "Name to be secured in certificate. If provided, CN field in CSR will be ignored.",
          "type": "string"
        },
        "contact": {
          "$ref": "#/definitions/CertificateContact",
          "description": "Requestor contact information"
        },
        "csr": {
          "description": "Certificate Signing Request",
          "type": "string"
        },
        "intelVPro": {
          "default": false,
          "description": "Only used for OV",
          "type": "boolean"
        },
        "organization": {
          "$ref": "#/definitions/CertificateOrganizationCreate",
          "description": "Required for EVSSL, OVSSL, CS, and DS"
        },
        "period": {
          "description": "Number of years for certificate validity period",
          "type": "integer"
        },
        "productType": {
          "description": "Type of product requesting a certificate. Only required non-renewal",
          "enum": [
            "DV_SSL",
            "DV_WILDCARD_SSL",
            "EV_SSL",
            "OV_CS",
            "OV_DS",
            "OV_SSL",
            "OV_WILDCARD_SSL",
            "UCC_DV_SSL",
            "UCC_EV_SSL",
            "UCC_OV_SSL"
          ],
          "type": "string"
        },
        "rootType": {
          "default": "STARFIELD_SHA_2",
          "description": "Root Type. Depending on certificate expiration date, SHA_1 not be allowed. Will default to SHA_2 if expiration date exceeds sha1 allowed date",
          "enum": [
            "GODADDY_SHA_1",
            "GODADDY_SHA_2",
            "STARFIELD_SHA_1",
            "STARFIELD_SHA_2"
          ],
          "type": "string"
        },
        "slotSize": {
          "description": "Number of subject alternative names(SAN) to be included in certificate ",
          "enum": [
            "FIVE",
            "TEN",
            "FIFTEEN",
            "TWENTY",
            "THIRTY",
            "FOURTY",
            "FIFTY",
            "ONE_HUNDRED"
          ],
          "type": "string"
        },
        "subjectAlternativeNames": {
          "description": "Subject Alternative names. Collection of subjectAlternativeNames to be included in certificate.",
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        }
      },
      "required": [
        "csr",
        "productType",
        "period",
        "contact"
      ]
    },
    "CertificateIdentifier": {
      "properties": {
        "certificateId": {
          "description": "The unique identifier of the certificate request. Only present if verified.",
          "type": "string"
        }
      },
      "required": [
        "certificateId"
      ]
    },
    "CertificateOrganization": {
      "properties": {
        "address": {
          "$ref": "#/definitions/CertificateAddress",
          "description": "Organization presence address"
        },
        "assumedName": {
          "description": "Only for EVSSL. The DBA(does business as) name for the organization.",
          "type": "string"
        },
        "jurisdictionOfIncorporation": {
          "$ref": "#/definitions/JurisdictionOfIncorporation",
          "description": "Jurisdiction of Incorporation"
        },
        "name": {
          "description": "Name of organization that owns common name",
          "type": "string"
        },
        "phone": {
          "description": "Phone number for organization",
          "type": "string"
        },
        "registrationAgent": {
          "description": "Only for EVSSL.",
          "type": "string"
        },
        "registrationNumber": {
          "description": "Only for EVSSL.",
          "type": "string"
        }
      },
      "required": [
        "name",
        "phone",
        "address"
      ]
    },
    "CertificateOrganizationCreate": {
      "properties": {
        "address": {
          "$ref": "#/definitions/CertificateAddress",
          "description": "Organization presence address"
        },
        "assumedName": {
          "description": "Only for EVSSL. The DBA(does business as) name for the organization.",
          "type": "string"
        },
        "name": {
          "description": "Name of organization that owns common name",
          "type": "string"
        },
        "phone": {
          "description": "Phone number for organization",
          "type": "string"
        },
        "registrationAgent": {
          "description": "Only for EVSSL.",
          "type": "string"
        },
        "registrationNumber": {
          "description": "Only for EVSSL.",
          "type": "string"
        }
      },
      "required": [
        "name",
        "phone"
      ]
    },
    "CertificateReissue": {
      "properties": {
        "callbackUrl": {
          "description": "Required if client would like to receive stateful action via callback during certificate lifecyle",
          "type": "string"
        },
        "commonName": {
          "default": "Existing common name",
          "description": "The common name of certificate to be secured",
          "type": "string"
        },
        "csr": {
          "default": "Existing CSR",
          "description": "Certificate Signing Request.",
          "type": "string"
        },
        "delayExistingRevoke": {
          "default": 72,
          "description": "In hours, time to delay revoking existing certificate after issuance of new certificate. If revokeExistingCertOnIssuance is enabled, this value will be ignored",
          "maximum": 168,
          "type": "integer"
        },
        "rootType": {
          "default": "GODADDY_SHA_1",
          "description": "Root Type. Depending on certificate expiration date, SHA_1 not be allowed. Will default to SHA_2 if expiration date exceeds sha1 allowed date",
          "enum": [
            "GODADDY_SHA_1",
            "GODADDY_SHA_2",
            "STARFIELD_SHA_1",
            "STARFIELD_SHA_2"
          ],
          "type": "string"
        },
        "subjectAlternativeNames": {
          "description": "Only used for UCC products. An array of subject alternative names to include in certificate.",
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "forceDomainRevetting": {
          "description": "Optional field. Domain verification will be required for each domain listed here. Specify a value of * to indicate that all domains associated with the request should have their domain information reverified.",
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        }
      }
    },
    "CertificateRenew": {
      "properties": {
        "callbackUrl": {
          "description": "Required if client would like to receive stateful actions via callback during certificate lifecyle",
          "type": "string"
        },
        "commonName": {
          "default": "Existing common name",
          "description": "The common name of certificate to be secured",
          "type": "string"
        },
        "csr": {
          "default": "Existing CSR",
          "description": "Certificate Signing Request.",
          "type": "string"
        },
        "period": {
          "default": 0,
          "description": "Number of years for certificate validity period, if different from previous certificate",
          "type": "integer"
        },
        "rootType": {
          "default": "GODADDY_SHA_1",
          "description": "Root Type. Depending on certificate expiration date, SHA_1 not be allowed. Will default to SHA_2 if expiration date exceeds sha1 allowed date",
          "enum": [
            "GODADDY_SHA_1",
            "GODADDY_SHA_2",
            "STARFIELD_SHA_1",
            "STARFIELD_SHA_2"
          ],
          "type": "string"
        },
        "subjectAlternativeNames": {
          "description": "Only used for UCC products. An array of subject alternative names to include in certificate. Not including a subject alternative name that was in the previous certificate will remove it from the renewed certificate.",
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        }
      }
    },
    "CertificateRevoke": {
      "properties": {
        "reason": {
          "description": "Reason for revocation",
          "enum": [
            "AFFILIATION_CHANGED",
            "CESSATION_OF_OPERATION",
            "KEY_COMPROMISE",
            "PRIVILEGE_WITHDRAWN",
            "SUPERSEDED"
          ],
          "type": "string"
        }
      },
      "required": [
        "reason"
      ]
    },
    "CertificateSiteSeal": {
      "properties": {
        "html": {
          "description": "Certificate Seal HTML",
          "type": "string"
        }
      },
      "required": [
        "html"
      ]
    },
    "CertificateEmailHistory": {
      "properties": {
        "id": {
          "description": "Email Id",
          "type": "integer"
        },
        "accountId": {
          "description": "Shopper Id requested certificate",
          "type": "integer"
        },
        "templateType": {
          "description": "Email template type name",
          "type": "string"
        },
        "fromType": {
          "description": "Email from address",
          "type": "string"
        },
        "recipients": {
          "description": "Email address email was sent",
          "type": "string"
        },
        "body": {
          "description": "Email message",
          "type": "string"
        },
        "dateEntered": {
          "description": "Date email sent",
          "format": "iso-datetime",
          "type": "string"
        },
        "subject": {
          "description": "Email subject",
          "type": "string"
        }
      },
      "required": [
        "id",
        "accountId",
        "templateType",
        "fromType",
        "recipients",
        "body",
        "dateEntered",
        "subject"
      ]
    },
    "JurisdictionOfIncorporation": {
      "properties": {
        "city": {
          "type": "string"
        },
        "country": {
          "format": "iso-country-code",
          "type": "string"
        },
        "county": {
          "type": "string"
        },
        "state": {
          "type": "string"
        }
      },
      "required": [
        "country"
      ]
    },
    "PEMCertificates": {
      "properties": {
        "certificate": {
          "description": "End entity certificate in PEM format",
          "type": "string"
        },
        "cross": {
          "description": "CA Cross Intermediate certificate in PEM format",
          "type": "string"
        },
        "intermediate": {
          "description": "CA Signing Intermediate certificate in PEM format",
          "type": "string"
        },
        "root": {
          "description": "CA Root certificate in PEM format",
          "type": "string"
        }
      },
      "required": [
        "certificate"
      ]
    },
    "SubjectAlternativeNameDetails": {
      "properties": {
        "status": {
          "description": "Total number of page results",
          "enum": [
            "PENDING",
            "INVALID",
            "COMPLETED",
            "FRAUD"
          ],
          "type": "string"
        },
        "subjectAlternativeName": {
          "description": "Subject alternative name to be included in certificate",
          "type": "string"
        }
      },
      "required": [
        "subjectAlternativeName",
        "status"
      ]
    },
    "CertificateDetailV2": {
      "properties": {
        "certificateId": {
          "description": "The unique identifier of the certificate request. Only present if no errors returned",
          "type": "string"
        },
        "commonName": {
          "description": "Common name of certificate",
          "format": "domain",
          "type": "string"
        },
        "period": {
          "description": "Validity period of order. Specified in years",
          "type": "integer"
        },
        "type": {
          "description": "Certificate type: \n  * `DV_SSL` - (Domain Validated Secure Sockets Layer) SSL certificate validated using domain name only\n  * `DV_WILDCARD_SSL` - SSL certificate containing subdomains which is validated using domain name only\n  * `EV_SSL` - (Extended Validation) SSL certificate validated using organization information, domain name, business legal status, and other factors\n  * `OV_CODE_SIGNING` - Code signing SSL certificate used by software developers to digitally sign apps. Validated using organization information\n  * `OV_DRIVER_SIGNING` - Driver signing SSL certificate request used by software developers to digitally sign secure code for Windows hardware drivers. Validated using organization information\n  * `OV_SSL` - SSL certificate validated using organization information and domain name\n  * `OV_WILDCARD_SSL` - SSL certificate containing subdomains which is validated using organization information and domain name\n  * `UCC_DV_SSL` - (Unified Communication Certificate) Multi domain SSL certificate validated using domain name only\n  * `UCC_EV_SSL` - Multi domain SSL certificate validated using organization information, domain name, business legal status, and other factors\n  * `UCC_OV_SSL` - Multi domain SSL certificate validated using organization information and domain name\n",
          "enum": [
            "DV_SSL",
            "DV_WILDCARD_SSL",
            "EV_SSL",
            "OV_CODE_SIGNING",
            "OV_DRIVER_SIGNING",
            "OV_SSL",
            "OV_WILDCARD_SSL",
            "UCC_DV_SSL",
            "UCC_EV_SSL",
            "UCC_OV_SSL"
          ],
          "type": "string"
        },
        "status": {
          "description": "Certificate status (if issued or revoked): \n  * `CANCELED` - Certificate request was canceled by customer\n  * `DENIED` - Certificate request was denied by customer\\n  * `EXPIRED` - Issued certificate has exceeded the valid end date\n  * `ISSUED` - Certificate has been issued and is within validity period\n  * `PENDING_ISSUANCE` - Certificate request has completed domain verification and is in the process of being issued\n  * `PENDING_REKEY` - Previously issued certificate was rekeyed by customer and is in the process of being reissued\n  * `PENDING_REVOCATION` - Previously issued certificate is in the process of being revoked\n  * `REVOKED` - Issued certificate has been revoked\\n  * `UNUSED` - Certificate in an error state\n",
          "enum": [
            "PENDING_ISSUANCE",
            "ISSUED",
            "REVOKED",
            "CANCELED",
            "DENIED",
            "PENDING_REVOCATION",
            "PENDING_REKEY",
            "UNUSED",
            "EXPIRED"
          ],
          "type": "string"
        },
        "createdAt": {
          "description": "The date the certificate was ordered.",
          "format": "iso-datetime",
          "type": "string"
        },
        "completedAt": {
          "description": "The date the certificate request completed processing.",
          "format": "iso-datetime",
          "type": "string"
        },
        "validEndAt": {
          "description": "The end date of the certificate's validity (if issued or revoked).",
          "format": "iso-datetime",
          "type": "string"
        },
        "validStartAt": {
          "description": "The start date of the certificate's validity (if issued or revoked).",
          "format": "iso-datetime",
          "type": "string"
        },
        "revokedAt": {
          "description": "The revocation date of certificate (if revoked).",
          "format": "iso-datetime",
          "type": "string"
        },
        "renewalAvailable": {
          "description": "Only returned when a renewal is available.",
          "type": "boolean"
        },
        "serialNumber": {
          "description": "Serial number of certificate (if issued or revoked)",
          "type": "string"
        },
        "serialNumberHex": {
          "description": "Hexadecmial format for Serial number of certificate(if issued or revoked)",
          "type": "string"
        },
        "slotSize": {
          "description": "Number of subject alternative names (SAN) to be included in certificate (if UCC): \n  * `FIVE` - Five slot UCC request\n  * `TEN` - Ten slot UCC request\n  * `FIFTEEN` - Fifteen slot UCC request\n  * `TWENTY` - Twenty slot UCC request\n  * `THIRTY` - Thirty slot UCC request\n  * `FOURTY` - Fourty slot UCC request\n  * `FIFTY` - Fifty slot UCC request\n  * `ONE_HUNDRED` - One hundred slot UCC request\n",
          "enum": [
            "FIVE",
            "TEN",
            "FIFTEEN",
            "TWENTY",
            "THIRTY",
            "FOURTY",
            "FIFTY",
            "ONE_HUNDRED"
          ],
          "type": "string"
        },
        "subjectAlternativeNames": {
          "description": "Subject Alternative names. Collection of subjectAlternativeNames to be included in certificate.",
          "items": {
            "format": "domain",
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        },
        "contact": {
          "$ref": "#/definitions/CertificateContact"
        },
        "organization": {
          "$ref": "#/definitions/CertificateOrganization"
        },
        "csr": {
          "description": "Certificate signing request (if present) in PEM format",
          "type": "string"
        },
        "rootType": {
          "description": "Root type: \n  * `GODADDY_SHA_1` - GoDaddy (Secure Hash Algorithm 1) SHA-1 root type\n  * `GODADDY_SHA_2` - GoDaddy (Secure Hash Algorithm 2) SHA-2 root type\n  * `STARFIELD_SHA_1` - Starfield SHA-1 root type\n  * `STARFIELD_SHA_2` - Starfield SHA-2 root type\n",
          "enum": [
            "GODADDY_SHA_1",
            "GODADDY_SHA_2",
            "STARFIELD_SHA_1",
            "STARFIELD_SHA_2"
          ],
          "type": "string"
        },
        "deniedReason": {
          "description": "Only present if certificate order has been denied",
          "type": "string"
        },
        "progress": {
          "description": "Percentage of completion for certificate vetting",
          "type": "integer"
        }
      },
      "required": [
        "certificateId",
        "commonName",
        "period",
        "type",
        "status",
        "createdAt",
        "contact"
      ]
    },
    "CertificateSummariesV2": {
      "properties": {
        "certificates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/CertificateSummaryV2"
          },
          "description": "List of certificates for a specified customer."
        },
        "pagination": {
          "$ref": "#/definitions/Pagination"
        }
      },
      "required": [
        "certificates",
        "pagination"
      ]
    },
    "CertificateSummaryV2": {
      "properties": {
        "certificateId": {
          "description": "The unique identifier of the certificate request.",
          "type": "string"
        },
        "commonName": {
          "description": "Common name for the certificate request.",
          "format": "domain",
          "type": "string"
        },
        "period": {
          "description": "Validity period of order. Specified in years.",
          "type": "integer"
        },
        "type": {
          "description": "Certificate type: \n  * `DV_SSL` - (Domain Validated Secure Sockets Layer) SSL certificate validated using domain name only\n  * `DV_WILDCARD_SSL` - SSL certificate containing subdomains which is validated using domain name only\n  * `EV_SSL` - (Extended Validation) SSL certificate validated using organization information, domain name, business legal status, and other factors\n  * `OV_CODE_SIGNING` - Code signing SSL certificate used by software developers to digitally sign apps. Validated using organization information\n  * `OV_DRIVER_SIGNING` - Driver signing SSL certificate request used by software developers to digitally sign secure code for Windows hardware drivers. Validated using organization information\n  * `OV_SSL` - SSL certificate validated using organization information and domain name\n  * `OV_WILDCARD_SSL` - SSL certificate containing subdomains which is validated using organization information and domain name\n  * `UCC_DV_SSL` - (Unified Communication Certificate) Multi domain SSL certificate validated using domain name only\n  * `UCC_EV_SSL` - Multi domain SSL certificate validated using organization information, domain name, business legal status, and other factors\n  * `UCC_OV_SSL` - Multi domain SSL certificate validated using organization information and domain name\n",
          "enum": [
            "DV_SSL",
            "DV_WILDCARD_SSL",
            "EV_SSL",
            "OV_CODE_SIGNING",
            "OV_DRIVER_SIGNING",
            "OV_SSL",
            "OV_WILDCARD_SSL",
            "UCC_DV_SSL",
            "UCC_EV_SSL",
            "UCC_OV_SSL"
          ],
          "type": "string"
        },
        "status": {
          "description": "Certificate status (if issued or revoked): \n  * `CANCELED` - Certificate request was canceled by customer\n  * `DENIED` - Certificate request was denied by customer\n  * `EXPIRED` - Issued certificate has exceeded the valid end date\n  * `ISSUED` - Certificate has been issued and is within validity period\n  * `PENDING_ISSUANCE` - Certificate request has completed domain verification and is in the process of being issued\n  * `PENDING_REKEY` - Previously issued certificate was rekeyed by customer and is in the process of being reissued\n  * `PENDING_REVOCATION` - Previously issued certificate is in the process of being revoked\n  * `REVOKED` - Issued certificate has been revoked\n  * `UNUSED` - Certificate in an error state\n",
          "enum": [
            "ISSUED",
            "CANCELED",
            "DENIED",
            "EXPIRED",
            "PENDING_ISSUANCE",
            "PENDING_REKEY",
            "PENDING_REVOCATION",
            "REVOKED",
            "UNUSED"
          ],
          "type": "string"
        },
        "createdAt": {
          "description": "Date that the certificate request was received.",
          "format": "iso-datetime",
          "type": "string"
        },
        "completedAt": {
          "description": "The date the certificate request completed processing (if issued or revoked).",
          "format": "iso-datetime",
          "type": "string"
        },
        "validEndAt": {
          "description": "The end date of the certificate's validity (if issued or revoked).",
          "format": "iso-datetime",
          "type": "string"
        },
        "validStartAt": {
          "description": "The start date of the certificate's validity (if issued or revoked).",
          "format": "iso-datetime",
          "type": "string"
        },
        "revokedAt": {
          "description": "The revocation date of certificate (if revoked).",
          "format": "iso-datetime",
          "type": "string"
        },
        "renewalAvailable": {
          "description": "Only returned when a renewal is available.",
          "type": "boolean"
        },
        "serialNumber": {
          "description": "Serial number of certificate (if issued or revoked).",
          "type": "string"
        },
        "slotSize": {
          "description": "Number of subject alternative names (SAN) to be included in certificate (if UCC): \n  * `FIVE` - Five slot UCC request\n  * `TEN` - Ten slot UCC request\n  * `FIFTEEN` - Fifteen slot UCC request\n  * `TWENTY` - Twenty slot UCC request\n  * `THIRTY` - Thirty slot UCC request\n  * `FOURTY` - Fourty slot UCC request\n  * `FIFTY` - Fifty slot UCC request\n  * `ONE_HUNDRED` - One hundred slot UCC request\n",
          "enum": [
            "FIVE",
            "TEN",
            "FIFTEEN",
            "TWENTY",
            "THIRTY",
            "FOURTY",
            "FIFTY",
            "ONE_HUNDRED"
          ],
          "type": "string"
        },
        "subjectAlternativeNames": {
          "description": "Subject Alternative names (if UCC). Collection of subjectAlternativeNames to be included in certificate.",
          "format": "domain",
          "items": {
            "type": "string"
          },
          "type": "array",
          "uniqueItems": true
        }
      },
      "required": [
        "certificateId",
        "commonName",
        "period",
        "type",
        "createdAt",
        "status"
      ]
    },
    "DomainVerificationSummary": {
      "properties": {
        "domain": {
          "description": "Domain name",
          "format": "domain",
          "type": "string"
        },
        "domainEntityId": {
          "description": "A unique identifier that can be leveraged for retrieving domain verification related information. Primarily used when troubleshooting a request",
          "type": "integer"
        },
        "dceToken": {
          "description": "DCE verification type token (if DCE verification type).",
          "type": "string"
        },
        "status": {
          "description": "Domain verification status: \n  * `AWAITING` - Verification pending customer input\n  * `INVALID` - SAN connected to a cancelled request\n  * `COMPLETED` - Verification completed\n  * `FAILED_VERIFICATION` - Verification failed\n  * `PENDING_POSSIBLE_FRAUD` - Flagged for a system level fraud review\n  * `VERIFIED_POSSIBLE_FRAUD` - Fraud detection reviewed but verified\n  * `DROPPED` - SAN dropped from request\n  * `REVOKED_CERT` - Certificate revoked\n  * `DROPPED_GOOGLE_SAFE_BROWSING` - SAN dropped from request due to Google Safe Browsing check\n  * `DROPPED_CERTIFICATE_AUTHORITY_AUTHORIZATION` - SAN dropped from request due to Certificate Authorization Authority DNS record check\n",
          "enum": [
            "COMPLETED",
            "FAILED_VERIFICATION",
            "VERIFIED_POSSIBLE_FRAUD",
            "DROPPED",
            "DROPPED_CERTIFICATE_AUTHORITY_AUTHORIZATION",
            "DROPPED_GOOGLE_SAFE_BROWSING",
            "INVALID",
            "AWAITING",
            "PENDING_POSSIBLE_FRAUD",
            "REVOKED_CERTIFICATE"
          ],
          "type": "string"
        },
        "createdAt": {
          "description": "Timestamp indicating when the domain verification process was started",
          "format": "iso-datetime",
          "type": "string"
        },
        "modifiedAt": {
          "description": "Timestamp indicating when the domain verification process was last updated",
          "format": "iso-datetime",
          "type": "string"
        },
        "type": {
          "description": "Domain verification type: \n  * `AUTO_GENERATED_DOMAIN_ACCESS_EMAIL_ADMIN` - Domain verified using domain control verification email sent to admin@<your.domain.com>\n  * `AUTO_GENERATED_DOMAIN_ACCESS_EMAIL_ADMINSTRATOR` - Domain verified using domain control verification email sent to administrator@<your.domain.com>\n  * `AUTO_GENERATED_DOMAIN_ACCESS_EMAIL_HOST_MASTER` - Domain verified using domain control verification email sent to hostmaster@<your.domain.com>\n  * `AUTO_GENERATED_DOMAIN_ACCESS_EMAIL_POST_MASTER` - Domain verified using domain control verification email sent to postmaster@<your.domain.com>\n  * `AUTO_GENERATED_DOMAIN_ACCESS_EMAIL_WEB_MASTER` - Domain verified using domain control verification email sent to webmaster@<your.domain.com>\n  * `DOMAIN_ACCESS_EMAIL` - Domain verified using a domain access email\n  * `DOMAIN_ACCESS_LETTER` - Customer completed a domain access letter which was used for domain verification\n  * `DOMAIN_CONTROL_EMAIL` - Domain verified using HTML file or DNS zone file text value\n  * `DOMAIN_ZONE_CONTROL` - DNS zone file containing a pre-generated text value used for domain verification\n  * `MANUAL_DOMAIN_ACCESS_EMAIL` - DAE sent to an email address manually entered by a rep\n  * `PREVIOUS_DOMAIN_ACCESS_EMAIL` - Customers domain access email for a prior certificate request was used for domain verification\n  * `REGISTRATION_AUTHORITY_DOMAIN_ACCESS_LETTER` - Representative reviewed a customer provided domain access letter and verified domain\n  * `REGISTRATION_AUTHORITY_DOMAIN_ZONE_CONTROL` - Representative verified domain using a manual domain zone control check\n  * `REGISTRATION_AUTHORITY_OVERRIDE` - Representative verified domain using alternative methods\n  * `REGISTRATION_AUTHORITY_WEBSITE_CONTROL` - Representative verified domain using a manual website control check\n  * `CUSTOMER_OWNED` - Validated customer account information used for domain control verification\n  * `WEBSITE_CONTROL` - HTML file in root website directory containing pre-generated value used for domain control verification\n",
          "enum": [
            "DOMAIN_CONTROL_EMAIL",
            "AUTO_GENERATED_DOMAIN_ACCESS_EMAIL_ADMIN",
            "AUTO_GENERATED_DOMAIN_ACCESS_EMAIL_ADMINSTRATOR",
            "AUTO_GENERATED_DOMAIN_ACCESS_EMAIL_HOST_MASTER",
            "AUTO_GENERATED_DOMAIN_ACCESS_EMAIL_POST_MASTER",
            "AUTO_GENERATED_DOMAIN_ACCESS_EMAIL_WEB_MASTER",
            "DOMAIN_ACCESS_EMAIL",
            "DOMAIN_ACCESS_LETTER",
            "DOMAIN_ZONE_CONTROL",
            "MANUAL_DOMAIN_ACCESS_EMAIL",
            "PREVIOUS_DOMAIN_ACCESS_EMAIL",
            "REGISTRATION_AUTHORITY_DOMAIN_ACCESS_LETTER",
            "REGISTRATION_AUTHORITY_DOMAIN_ZONE_CONTROL",
            "REGISTRATION_AUTHORITY_OVERRIDE",
            "REGISTRATION_AUTHORITY_WEBSITE_CONTROL",
            "CUSTOMER_OWNED",
            "WEBSITE_CONTROL"
          ],
          "type": "string"
        },
        "usage": {
          "description": "Type of domain name used for domain verification",
          "enum": [
            "COMMON_NAME",
            "SUBJECT_ALTERNATIVE_NAME"
          ],
          "type": "string"
        }
      },
      "required": [
        "domain",
        "domainEntityId",
        "status",
        "createdAt",
        "modifiedAt",
        "type",
        "usage"
      ]
    },
    "ExternalAccountBinding": {
      "properties": {
        "directoryUrl": {
          "description": "ACME directory resource URL.",
          "format": "url",
          "type": "string"
        },
        "keyId": {
          "description": "EAB key identifier for the ACME account.",
          "type": "string"
        },
        "hmacKey": {
          "description": "EAB HMAC key for the ACME account",
          "type": "string"
        }
      },
      "required": [
        "directoryUrl",
        "keyId",
        "hmacKey"
      ]
    },
    "DomainVerificationDetail": {
      "allOf": [
        {
          "$ref": "#/definitions/DomainVerificationSummary"
        },
        {
          "type": "object",
          "properties": {
            "certificateAuthorityAuthorization": {
              "description": "Contains information about the last Certificate Authority Authorization (CAA) Lookup details for the specified domain.\n\nIn order for a domain to be eligible to be included in the certificate, the entire domain hierarchy must be scanned for DNS CAA records, as outlined by RFC 6844.\n\nThe absence of any CAA records found in the domain hierarchy indicates that the domain may be included in the certificate. Alternatively, if CAA records are found when scanning the domain hierarchy, the domain may be included in the certificate as long as `godaddy.com` or `starfieldtech.com` is found in the DNS record value. However, if CAA records are found, yet `godaddy.com` or `starfieldtech.com` is not found in any CAA record's value, then we must drop the domain from the certificate request.\n\nIn the case where there are repeated DNS errors when scanning the domain hierarchy for CAA records, thus ending in an unsuccessful scan, then the domain can still be included in the certificate provided the primary domain is not setup with DNSSEC. Conversely, if DNSSEC is found to be setup on the primary domain when scanning following repeated CAA failures, the domain must be dropped from the certificate request. Finally, if DNS errors persist to the point where a successful DNSSEC query could not be obtained, then the domain must be dropped from the certificate request.\n",
              "type": "object",
              "properties": {
                "status": {
                  "description": "Returns the status of the CAA Lookup for the specified domain:\n* `PENDING` - The CAA lookup has not yet been attempted for the specified domain.\n* `REMOVED_DNS_ERROR` - Repeated errors occurred while scanning for CAA records, thereby resulting in a DNSSEC scan. DNS errors then prevented the system from determining if DNSSEC was enabled for the specified domain, and it had to be removed from the certificate request.\n* `REMOVED_DNSSEC_ENABLED` - Repeated errors occurred while scanning for CAA records, thereby resulting in a DNSSEC scan. DNSSEC was determined to be enabled for the specified domain, and it had to be removed from the certificate request.\n* `REMOVED_NOT_FOUND_CA` - CAA records were found during the CAA lookup for the speicified domain, but `godaddy.com` or `starfieldtech.com` was not listed as a value, thereby not allowing us to issue a certificate with this domain. The specified domain was removed from the certificate request.\n* `REMOVED_UNKNOWN_CRITICAL_TAG` - A CAA record was found during the CAA lookup with its Critical bit set, as outlined by RFC 6844, yet the Tag of the CAA record was not understood (as outlined by RFC 6844). The specified domain was removed from the certificate request.\n* `SUCCESS_CAA` - The CAA lookup was successful for the specified domain, and the domain can remain in the certificate request.\n* `SUCCESS_DNSSEC` - Repeated errors occurred while scanning for CAA records, thereby resulting in a DNSSEC scan. The system detemined that DNSSEC was not enabled for the specified domain, so the domain is allowed to remain in the certificate request.\n",
                  "enum": [
                    "PENDING",
                    "REMOVED_DNS_ERROR",
                    "REMOVED_DNSSEC_ENABLED",
                    "REMOVED_NOT_FOUND_CA",
                    "REMOVED_UNKNOWN_CRITICAL_TAG",
                    "SUCCESS_CAA",
                    "SUCCESS_DNSSEC"
                  ],
                  "type": "string"
                },
                "queryPaths": {
                  "description": "Details all the individual DNS paths that were scanned for CAA records for this domain, as detailed by RFC 6844. This element not only contains the parts determined from parsing the domain, but also any CNAME or DNAME targets specified by any of those individual parts.",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "recommendations": {
                  "description": "Returns a list of fix recommendations if the query was unsuccessful, or if the domain was dropped from the certificate request, so that a subsequent certificate request with the specified domain will successfully pass its CAA scan.",
                  "type": "array",
                  "items": {
                    "description": "* `ADD_CA_TO_CAA` - The system found a CAA record in the domain hierarchy, but it did not find our CA in the record's values. Add `godaddy.com` or `starfieldtech.com` to the CAA record's values.\n* `CREATE_TARGET_DOMAIN_CAA` - Create a CAA record on the specified domain with `godaddy.com` or `starfieldtech.com` as the value. If the system finds a CAA record in the specified domain, it will stop scanning the domain hierarchy, thereby preventing potentially problematic parent domain paths from being scanned.\n* `DISABLE_DNSSEC` - Disable DNSSEC on the domain if CAA lookups fail and a DNSSEC scan is being used as the method for determining if the specified domain can remain in the certificate request.\n* `FIX_CRITICAL_TAG` - When setting the critical flag in a CAA record, you must ensure you're using a well-known tag, per RFC 6844.\n* `VALIDATE_SOA` - Make sure all queryPaths for the specified domain have an SOA record pointing to a valid publicly-accessible nameserver and respond in a timely fashion.\n",
                    "enum": [
                      "ADD_CA_TO_CAA",
                      "CREATE_TARGET_DOMAIN_CAA",
                      "DISABLE_DNSSEC",
                      "FIX_CRITICAL_TAG",
                      "VALIDATE_SOA"
                    ],
                    "type": "string"
                  }
                },
                "completedAt": {
                  "description": "The date the certificate request completed processing.",
                  "format": "iso-datetime",
                  "type": "string"
                }
              }
            }
          }
        }
      ]
    },
    "ArrayOfCountry": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Country"
      }
    },
    "Country": {
      "properties": {
        "callingCode": {
          "description": "The calling code prefix used for phone numbers in this country",
          "type": "string"
        },
        "countryKey": {
          "description": "The ISO country-code",
          "format": "iso-country-code",
          "type": "string"
        },
        "label": {
          "description": "The localized name of the country",
          "type": "string"
        },
        "states": {
          "description": "List of states/provinces in this country",
          "items": {
            "$ref": "#/definitions/State"
          },
          "type": "array"
        }
      }
    },
    "ArrayOfCountrySummary": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/CountrySummary"
      }
    },
    "CountrySummary": {
      "properties": {
        "callingCode": {
          "description": "The calling code prefix used for phone numbers in this country",
          "type": "string"
        },
        "countryKey": {
          "description": "The ISO country-code",
          "format": "iso-country-code",
          "type": "string"
        },
        "label": {
          "description": "The localized name of the country",
          "type": "string"
        }
      }
    },
    "State": {
      "properties": {
        "label": {
          "description": "The localized name of the state, province, or territory",
          "type": "string"
        },
        "stateKey": {
          "description": "The state code",
          "type": "string"
        }
      }
    },
    "Action": {
      "properties": {
        "type": {
          "type": "string",
          "description": "The type of action being performed<br/><ul><li><strong style='margin-left: 12px;'>AUTH_CODE_PURCHASE</strong> - Request for an auth code for a .de domain via POST /v2/customers/{customerId}/domains/{domain}/purchaseAuthCode.</li><li><strong style='margin-left: 12px;'>AUTH_CODE_REGENERATE</strong> - Request to regenerate the authCode for a domain via POST /v2/customers/{customerId}/domains/{domain}/regenerateAuthCode</li><li><strong style='margin-left: 12px;'>AUTO_RENEWAL</strong> - A Domain Auto Renew is in progress.</li><li><strong style='margin-left: 12px;'>BACKORDER_PURCHASE</strong> - Request to purchase a domain backorder via POST /v2/customers/{customerId}/domains/backorders/purchase.</li><li><strong style='margin-left: 12px;'>BACKORDER_DELETE</strong> - Request to cancel the current domain backorder via DELETE /v2/customers/{customerId}/domains/backorders/{domain}.</li><li><strong style='margin-left: 12px;'>BACKORDER_UPDATE</strong> - Request update the current domain backorder via PATCH /v2/customers/{customerId}/domains/backorders/{domain}.</li><li><strong style='margin-left: 12px;'>CONTACT_CREATE</strong> - Request to create a contact via POST /v2/customers/{customerId}/domains/contacts.</li><li><strong style='margin-left: 12px;'>CONTACT_DELETE</strong> - Request to delete a contact via DELETE /v2/customers/{customerId}/domains/contacts/{contactId}</li><li><strong style='margin-left: 12px;'>CONTACT_UPDATE</strong> - Request to update a contact via PATCH /v2/customers/{customerId}/domains/contacts/{contactId}</li><li><strong style='margin-left: 12px;'>DNS_VERIFICATION</strong> - Domain requires zone file setup.</li><li><strong style='margin-left: 12px;'>DNSSEC_CREATE</strong> - Request to create DNSSEC record for the domain via PATCH /v2/customers/{customerId}/domains/{domain}/dnssecRecords.</li><li><strong style='margin-left: 12px;'>DNSSEC_DELETE</strong> - Request to delete DNSSEC record for the domain via DELETE /v2/customers/{customerId}/domains/{domain}/dnssecRecords.</li><li><strong style='margin-left: 12px;'>DOMAIN_DELETE</strong> - Request to delete the domain via DELETE /v2/customers/{customerId}/domains/{domain}</li><li><strong style='margin-left: 12px;'>DOMAIN_UPDATE</strong> - Request to update the domain via PATCH /v2/customers/{customerId}/domains/{domain}</li><li><strong style='margin-left: 12px;'>DOMAIN_UPDATE_CONTACTS</strong> -Request to update the domain contacts via PATCH /v2/customers/{customerId}/domains/{domain}/contacts</li><li><strong style='margin-left: 12px;'>DOMAIN_UPDATE_NAME_SERVERS</strong> - Request to update the domain name servers via PUT /v2/customers/{customerId}/domains/{domain}/nameServers</li><li><strong style='margin-left: 12px;'>EXPIRY</strong> - A Domain Expiration is in progress.</li><li><strong style='margin-left: 12px;'>HOST_CREATE</strong> - Request to create a hostname via PUT /v2/customers/{customerId}/domains/{domain}/hosts/{hostname}</li><li><strong style='margin-left: 12px;'>HOST_DELETE</strong> - Request to delete a hostname via DELETE /v2/customers/{customerId}/domains/{domain}/hosts/{hostname}</li><li><strong style='margin-left: 12px;'>ICANN_VERIFICATION</strong> - Domain requires registrant verification for Icann.</li><li><strong style='margin-left: 12px;'>PREMIUM</strong> - Premium Domain domain sale is in progress.</li><li><strong style='margin-left: 12px;'>PRIVACY_PURCHASE</strong> - Request to purchase privacy for a domain via POST /v2/customers/{customerId}/domains/{domain}/privacy/purchase</li><li><strong style='margin-left: 12px;'>PRIVACY_DELETE</strong> - Request to remove privacy from a domain via DELETE /v2/customers/{customerId}/domains/{domain}/privacy</li><li><strong style='margin-left: 12px;'>REDEEM</strong> - Request to redeem a domain via POST /v2/customers/{customerId}/domains/{domain}/redeem</li><li><strong style='margin-left: 12px;'>REGISTER</strong> - Request to register a domain via POST /v2/customers/{customerId}/domains/{domain}/register</li><li><strong style='margin-left: 12px;'>RENEW</strong> - Request to renew a domain via POST /v2/customers/{customerId}/domains/{domain}/renew</li><li><strong style='margin-left: 12px;'>RENEW_UNDO</strong> - Request to undo a renewal for a uk domain via POST /v2/customers/{customerId}/domains/{domain}/undoRenew</li><li><strong style='margin-left: 12px;'>TRADE</strong> - A domain trade request is in progress</li><li><strong style='margin-left: 12px;'>TRADE_CANCEL</strong> - Request to cancel a trade for a domain via POST /v2/customers/{customerId}/domains/{domain}/tradeCancel</li><li><strong style='margin-left: 12px;'>TRADE_PURCHASE</strong> - Request to purchase a trade for a domain via POST /v2/customers/{customerId}/domains/{domain}/tradePurchase</li><li><strong style='margin-left: 12px;'>TRADE_PURCHASE_AUTH_TEXT_MESSAGE</strong> - Request for a trade purchase text message for a domain via POST /v2/customers/{customerId}/domains/{domain}/tradePurchaseAuthorizationTextMessage</li><li><strong style='margin-left: 12px;'>TRADE_RESEND_AUTH_EMAIL</strong> - Request to resend the trade auth email message for a domain via POST /v2/customers/{customerId}/domains/{domain}/tradeResendAuthorizationEmail</li><li><strong style='margin-left: 12px;'>TRANSFER</strong> - Request to transfer a domain via POST /v2/customers/{customerId}/domains/{domain}/transfer</li><li><strong style='margin-left: 12px;'>TRANSFER_IN</strong> - A domain transfer in request is in progress.</li><li><strong style='margin-left: 12px;'>TRANSFER_IN_CANCEL</strong> - Request to cancel a domain transfer via POST /v2/customers/{customerId}/domains/{domain}/transferInCancel</li><li><strong style='margin-left: 12px;'>TRANSFER_OUT</strong> - A domain transfer out request is in progress.</li><li><strong style='margin-left: 12px;'>TRANSFER_OUT_ACCEPT</strong> - Request to accept a transfer out request for a domain via POST /v2/customers/{customerId}/domains/{domain}/transferOutAccept</li><li><strong style='margin-left: 12px;'>TRANSFER_OUT_REJECT</strong> - Request to reject a transfer out request for a domain via POST /v2/customers/{customerId}/domains/{domain}/transferOutReject</li><li><strong style='margin-left: 12px;'>TRANSFER_OUT_REQUESTED</strong> - Request to transfer out for a domain (.de) via POST /v2/customers/{customerId}/domains/{domain}/transferOut</li><li><strong style='margin-left: 12px;'>TRANSIT</strong> - Request to transit a de or at domain at the registry via POST /v2/customers/{customerId}/domains/{domain}/transit</li></ul>",
          "enum": [
            "AUTH_CODE_PURCHASE",
            "AUTH_CODE_REGENERATE",
            "AUTO_RENEWAL",
            "BACKORDER_PURCHASE",
            "BACKORDER_DELETE",
            "BACKORDER_UPDATE",
            "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_CANCEL",
            "TRANSFER_OUT",
            "TRANSFER_OUT_ACCEPT",
            "TRANSFER_OUT_REJECT",
            "TRANSFER_OUT_REQUESTED",
            "TRANSIT"
          ]
        },
        "origination": {
          "type": "string",
          "enum": [
            "USER",
            "SYSTEM"
          ],
          "description": "The origination of the action<br/><ul><li><strong style='margin-left: 12px;'>USER</strong> - These are user requests.</li><li><strong style='margin-left: 12px;'>SYSTEM</strong> - These are system processing actions.</li></ul>"
        },
        "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<br/><ul><li><strong style='margin-left: 12px;'>ACCEPTED</strong> - The action has been queued, processing has not started.</li><li><strong style='margin-left: 12px;'>AWAITING</strong> - The action is waiting on a user input.</li><li><strong style='margin-left: 12px;'>CANCELLED</strong> - The action has been cancelled by the user.</li><li><strong style='margin-left: 12px;'>FAILED</strong> - An error occurred while the action was processing, no more processing will be performed.</li><li><strong style='margin-left: 12px;'>PENDING</strong> - The action is being processed.</li><li><strong style='margin-left: 12px;'>SUCCESS</strong> - The action has completed, no additional processing is required.</li></ul>"
        },
        "reason": {
          "$ref": "#/definitions/ActionReason",
          "description": "The detailed reason for the status"
        },
        "requestId": {
          "type": "string",
          "description": "A client provided identifier (via X-Request-Id header) used for tracking individual requests"
        }
      },
      "required": [
        "type",
        "origination",
        "createdAt",
        "status"
      ]
    },
    "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": "#/definitions/ErrorField"
          },
          "description": "List of the specific fields, and the errors found with their contents"
        }
      },
      "required": [
        "code"
      ]
    },
    "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<br/><br/>\nNOTE: These are sample values, there are many\n<a href='http://www.iso.org/iso/country_codes.htm'>more</a>",
          "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"
      ]
    },
    "ArrayOfDNSRecord": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/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"
      ]
    },
    "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"
      ]
    },
    "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<br/><ul><li><strong style='margin-left: 12px;'>EXPOSE_WHOIS</strong> - Required when the exposeWhois field is updated to true</li></ul>",
          "items": {
            "enum": [
              "EXPOSE_WHOIS"
            ],
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "agreementKeys",
        "agreedBy",
        "agreedAt"
      ]
    },
    "Contact": {
      "properties": {
        "addressMailing": {
          "$ref": "#/definitions/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"
      ]
    },
    "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<br/><ul><li><strong style='margin-left: 12px;'>ASCII</strong> - Data contains only ASCII characters that are not region or language specific</li><li><strong style='margin-left: 12px;'>UTF-8</strong> - Data contains characters that are specific to a region or language</li></ul>"
        },
        "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": "#/definitions/Address"
        },
        "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"
      ]
    },
    "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"
      ]
    },
    "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"
      ]
    },
    "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"
      ]
    },
    "DomainAvailableBulk": {
      "properties": {
        "domains": {
          "description": "Domain available response array",
          "items": {
            "$ref": "#/definitions/DomainAvailableResponse"
          },
          "type": "array"
        }
      },
      "required": [
        "domains"
      ]
    },
    "DomainAvailableBulkMixed": {
      "properties": {
        "domains": {
          "description": "Domain available response array",
          "items": {
            "$ref": "#/definitions/DomainAvailableResponse"
          },
          "type": "array"
        },
        "errors": {
          "description": "Errors encountered while performing a domain available check",
          "items": {
            "$ref": "#/definitions/DomainAvailableError"
          },
          "type": "array"
        }
      },
      "required": [
        "domains"
      ]
    },
    "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": "<ul>\n<li style='margin-left: 12px;'>JSONPath referring to a field containing an error</li>\n<strong style='margin-left: 12px;'>OR</strong>\n<li style='margin-left: 12px;'>JSONPath referring to a field that refers to an object containing an error, with more detail in `pathRelated`</li>\n</ul>",
          "format": "json-path",
          "type": "string"
        },
        "status": {
          "description": "HTTP status code that would return for a single check",
          "type": "integer"
        }
      },
      "required": [
        "code",
        "domain",
        "path",
        "status"
      ]
    },
    "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"
      ]
    },
    "DomainContacts": {
      "properties": {
        "contactAdmin": {
          "$ref": "#/definitions/Contact"
        },
        "contactBilling": {
          "$ref": "#/definitions/Contact"
        },
        "contactRegistrant": {
          "$ref": "#/definitions/Contact"
        },
        "contactTech": {
          "$ref": "#/definitions/Contact"
        }
      },
      "required": [
        "contactRegistrant"
      ]
    },
    "DomainContactsV2": {
      "additionalProperties": false,
      "properties": {
        "registrant": {
          "$ref": "#/definitions/ContactDomain",
          "description": "Registrant contact for the domain"
        },
        "admin": {
          "$ref": "#/definitions/ContactDomain",
          "description": "Administrative contact for the domain"
        },
        "tech": {
          "$ref": "#/definitions/ContactDomain",
          "description": "Technical contact for the domain"
        },
        "billing": {
          "$ref": "#/definitions/ContactDomain",
          "description": "Billing contact for the domain"
        }
      }
    },
    "DomainDetail": {
      "properties": {
        "authCode": {
          "description": "Authorization code for transferring the Domain",
          "type": "string"
        },
        "contactAdmin": {
          "$ref": "#/definitions/Contact",
          "description": "Administrative contact for the domain registration"
        },
        "contactBilling": {
          "$ref": "#/definitions/Contact",
          "description": "Billing contact for the domain registration"
        },
        "contactRegistrant": {
          "$ref": "#/definitions/Contact",
          "description": "Registration contact for the domain"
        },
        "contactTech": {
          "$ref": "#/definitions/Contact",
          "description": "Technical contact for the domain registration"
        },
        "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"
        },
        "status": {
          "description": "Processing status of the domain<br/><ul>\n<li><strong style='margin-left: 12px;'>ACTIVE</strong> - All is well</li>\n<li><strong style='margin-left: 12px;'>AWAITING*</strong> - System is waiting for the end-user to complete an action</li>\n<li><strong style='margin-left: 12px;'>CANCELLED*</strong> - Domain has been cancelled, and may or may not be reclaimable</li>\n<li><strong style='margin-left: 12px;'>CONFISCATED</strong> - Domain has been confiscated, usually for abuse, chargeback, or fraud</li>\n<li><strong style='margin-left: 12px;'>DISABLED*</strong> - Domain has been disabled</li>\n<li><strong style='margin-left: 12px;'>EXCLUDED*</strong> - Domain has been excluded from Firehose registration</li>\n<li><strong style='margin-left: 12px;'>EXPIRED*</strong> - Domain has expired</li>\n<li><strong style='margin-left: 12px;'>FAILED*</strong> - Domain has failed a required action, and the system is no longer retrying</li>\n<li><strong style='margin-left: 12px;'>HELD*</strong> - Domain has been placed on hold, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>LOCKED*</strong> - Domain has been locked, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>PARKED*</strong> - Domain has been parked, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>PENDING*</strong> - Domain is working its way through an automated workflow</li>\n<li><strong style='margin-left: 12px;'>RESERVED*</strong> - Domain is reserved, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>REVERTED</strong> - Domain has been reverted, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>SUSPENDED*</strong> - Domain has been suspended, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>TRANSFERRED*</strong> - Domain has been transferred out</li>\n<li><strong style='margin-left: 12px;'>UNKNOWN</strong> - Domain is in an unknown state</li>\n<li><strong style='margin-left: 12px;'>UNLOCKED*</strong> - Domain has been unlocked, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>UNPARKED*</strong> - Domain has been unparked, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>UPDATED*</strong> - Domain ownership has been transferred to another account</li>\n</ul>",
          "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": "#/definitions/VerificationsDomain",
          "description": "Progress and status for each of the verification processes requested for this domain"
        }
      },
      "required": [
        "domainId",
        "domain",
        "status",
        "expirationProtected",
        "holdRegistrar",
        "locked",
        "privacy",
        "renewAuto",
        "renewDeadline",
        "transferProtected",
        "createdAt",
        "authCode",
        "nameServers",
        "contactRegistrant",
        "contactBilling",
        "contactAdmin",
        "contactTech"
      ]
    },
    "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<br/><ul><li><strong style='margin-left: 12px;'>ACTIVE</strong> - Domain has been registered and is active.</li><li><strong style='margin-left: 12px;'>CANCELLED</strong> - Domain has been cancelled by the user or system, and is not be reclaimable.</li><li><strong style='margin-left: 12px;'>DELETED_REDEEMABLE</strong> - Domain is deleted but is redeemable.</li><li><strong style='margin-left: 12px;'>EXPIRED</strong> - Domain has expired.</li><li><strong style='margin-left: 12px;'>FAILED</strong> - Domain registration or transfer error.</li><li><strong style='margin-left: 12px;'>LOCKED_REGISTRAR</strong> - Domain is locked at the registrar - this is usually the result of a spam, abuse, etc.</li><li><strong style='margin-left: 12px;'>PARKED</strong> - Domain has been parked.</li><li><strong style='margin-left: 12px;'>HELD_REGISTRAR</strong> - Domain is held at the registrar and cannot be transferred or modified - this is usually the result of a dispute.</li><li><strong style='margin-left: 12px;'>OWNERSHIP_CHANGED</strong> - Domain has been moved to another account.</li><li><strong style='margin-left: 12px;'>PENDING_TRANSFER</strong> - Domain transfer has been requested and is pending the transfer process.</li><li><strong style='margin-left: 12px;'>PENDING_REGISTRATION</strong> - Domain is pending setup at the registry.</li><li><strong style='margin-left: 12px;'>REPOSSESSED</strong> - Domain has been confiscated - this is usually the result of a chargeback, fraud, abuse, etc.).</li><li><strong style='margin-left: 12px;'>SUSPENDED</strong> - Domain is in violation and has been suspended.</li><li><strong style='margin-left: 12px;'>TRANSFERRED</strong> - Domain has been transferred to another registrar.</li></ul>",
          "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": "#/definitions/RenewalDetails",
          "description": "Information for renewal of domain"
        },
        "verifications": {
          "$ref": "#/definitions/VerificationsDomainV2",
          "description": "Progress and status for each of the verification processes required for this domain"
        },
        "contacts": {
          "$ref": "#/definitions/DomainContactsV2",
          "description": "Contacts for the domain registration"
        },
        "actions": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Action"
          },
          "description": "List of current actions in progress for this domain"
        },
        "dnssecRecords": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/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<br/><ul><li><strong style='margin-left: 12px;'>ADD_PERIOD</strong> - This grace period is provided after the initial registration of a domain name.</li><li><strong style='margin-left: 12px;'>AUTO_RENEW_PERIOD</strong> - This grace period is provided after a domain name registration period expires and is extended (renewed) automatically by the registry.</li><li><strong style='margin-left: 12px;'>CLIENT_DELETE_PROHIBITED</strong> - This status code tells your domain's registry to reject requests to delete the domain.</li><li><strong style='margin-left: 12px;'>CLIENT_HOLD</strong> - This status code tells your domain's registry to not activate your domain in the DNS and as a consequence, it will not resolve.</li><li><strong style='margin-left: 12px;'>CLIENT_RENEW_PROHIBITED</strong> - This status code tells your domain's registry to reject requests to renew your domain.</li><li><strong style='margin-left: 12px;'>CLIENT_TRANSFER_PROHIBITED</strong> - This status code tells your domain's registry to reject requests to transfer the domain from your current registrar to another.</li><li><strong style='margin-left: 12px;'>CLIENT_UPDATE_PROHIBITED</strong> - This status code tells your domain's registry to reject requests to update the domain.</li><li><strong style='margin-left: 12px;'>INACTIVE</strong> - This status code indicates that delegation information (name servers) has not been associated with your domain.</li><li><strong style='margin-left: 12px;'>OK</strong> - This is the standard status for a domain, meaning it has no pending operations or prohibitions.</li><li><strong style='margin-left: 12px;'>PENDING_CREATE</strong> - This status code indicates that a request to create your domain has been received and is being processed.</li><li><strong style='margin-left: 12px;'>PENDING_DELETE</strong> - 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.</li><li><strong style='margin-left: 12px;'>PENDING_RENEW</strong> - This status code indicates that a request to renew your domain has been received and is being processed.</li><li><strong style='margin-left: 12px;'>PENDING_RESTORE</strong> - This status code indicates that your registrar has asked the registry to restore your domain that was in REDEMPTION_PERIOD status</li><li><strong style='margin-left: 12px;'>PENDING_TRANSFER</strong> - This status code indicates that a request to transfer your domain to a new registrar has been received and is being processed.</li><li><strong style='margin-left: 12px;'>PENDING_UPDATE</strong> - This status code indicates that a request to update your domain has been received and is being processed.</li><li><strong style='margin-left: 12px;'>REDEMPTION_PERIOD</strong> - This status code indicates that your registrar has asked the registry to delete your domain.</li><li><strong style='margin-left: 12px;'>RENEW_PERIOD</strong> - This grace period is provided after a domain name registration period is explicitly extended (renewed) by the registrar.</li><li><strong style='margin-left: 12px;'>SERVER_DELETE_PROHIBITED</strong> - This status code prevents your domain from being deleted. </li><li><strong style='margin-left: 12px;'>SERVER_HOLD</strong> - This status code is set by your domain's Registry Operator. Your domain is not activated in the DNS.</li><li><strong style='margin-left: 12px;'>SERVER_RENEW_PROHIBITED</strong> - This status code indicates your domain's Registry Operator will not allow your registrar to renew your domain.</li><li><strong style='margin-left: 12px;'>SERVER_TRANSFER_PROHIBITED</strong> - This status code prevents your domain from being transferred from your current registrar to another. </li><li><strong style='margin-left: 12px;'>SERVER_UPDATE_PROHIBITED</strong> - This status code locks your domain preventing it from being updated.</li><li><strong style='margin-left: 12px;'>TRANSFER_PERIOD</strong> - This grace period is provided after the successful transfer of a domain name from one registrar to another. </li></ul>"
        }
      },
      "required": [
        "domainId",
        "domain",
        "status",
        "expirationProtected",
        "holdRegistrar",
        "locked",
        "privacy",
        "renewAuto",
        "renewDeadline",
        "transferProtected",
        "createdAt",
        "authCode",
        "nameServers",
        "contacts"
      ]
    },
    "DomainDnssec": {
      "properties": {
        "algorithm": {
          "description": "This identifies the cryptographic algorithm used to generate the signature<br/><ul><li><strong style='margin-left: 12px;'>RSAMD5</strong> - [01] DRSA/MD5 </li><li><strong style='margin-left: 12px;'>DSA</strong> - [03] DSA/SHA1</li><li><strong style='margin-left: 12px;'>RSASHA1</strong> - [05] RSA/SHA-1</li><li><strong style='margin-left: 12px;'>DSA_NSEC3_SHA1</strong> - [06] DSA-NSEC3-SHA1</li><li><strong style='margin-left: 12px;'>RSASHA1_NSEC3_SHA1</strong> - [07] RSASHA1-NSEC3-SHA1</li><li><strong style='margin-left: 12px;'>RSASHA256</strong> - [08] RSA/SHA-256</li><li><strong style='margin-left: 12px;'>RSASHA512</strong> - [10] RSA/SHA-512</li><li><strong style='margin-left: 12px;'>ECC_GOST</strong> - [12] GOST R 34.10-2001</li><li><strong style='margin-left: 12px;'>ECDSAP256SHA256</strong> - [13] ECDSA Curve P-256 with SHA-256</li><li><strong style='margin-left: 12px;'>ECDSAP384SHA384</strong> - [14] ECDSA Curve P-384 with SHA-384</li><li><strong style='margin-left: 12px;'>ED25519</strong> - [15] Ed25519</li><li><strong style='margin-left: 12px;'>ED448</strong> - [16] Ed448</li></ul>",
          "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<br/><ul><li><strong style='margin-left: 12px;'>SHA1</strong> - [01] SHA-1</li><li><strong style='margin-left: 12px;'>SHA256</strong> - [02] SHA-256</li><li><strong style='margin-left: 12px;'>GOST</strong> - [03] GOST R 34.11-94</li><li><strong style='margin-left: 12px;'>SHA384</strong> - [04] SHA-384</li></ul>",
          "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<br/><ul><li><strong style='margin-left: 12px;'>ZSK</strong> - [256] Zone-Signing Key</li><li><strong style='margin-left: 12px;'>KSK</strong> - [257] Key-Signing Key</li></ul>",
          "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"
      ]
    },
    "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_PURCHASE",
            "AUTH_CODE_REGENERATE",
            "AUTO_RENEWAL",
            "BACKORDER",
            "BACKORDER_PURCHASE",
            "BACKORDER_DELETE",
            "BACKORDER_UPDATE",
            "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_CANCEL",
            "TRANSFER_OUT",
            "TRANSFER_OUT_ACCEPT",
            "TRANSFER_OUT_REJECT",
            "TRANSFER_OUT_REQUESTED",
            "TRANSIT"
          ],
          "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 specifed by GET /v2/customers/{customerId}/domains/notifications/schema",
          "default": "",
          "type": "object"
        }
      },
      "required": [
        "notificationId",
        "type",
        "resource",
        "resourceType",
        "status",
        "addedAt"
      ]
    },
    "DomainNotificationType": {
      "properties": {
        "type": {
          "description": "The notification type",
          "enum": [
            "AUTH_CODE_PURCHASE",
            "AUTH_CODE_REGENERATE",
            "AUTO_RENEWAL",
            "BACKORDER",
            "BACKORDER_PURCHASE",
            "BACKORDER_DELETE",
            "BACKORDER_UPDATE",
            "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_CANCEL",
            "TRANSFER_OUT",
            "TRANSFER_OUT_ACCEPT",
            "TRANSFER_OUT_REJECT",
            "TRANSFER_OUT_REQUESTED",
            "TRANSIT"
          ],
          "type": "string"
        }
      },
      "required": [
        "type"
      ]
    },
    "DomainPurchase": {
      "properties": {
        "consent": {
          "$ref": "#/definitions/Consent"
        },
        "contactAdmin": {
          "$ref": "#/definitions/Contact"
        },
        "contactBilling": {
          "$ref": "#/definitions/Contact"
        },
        "contactRegistrant": {
          "$ref": "#/definitions/Contact"
        },
        "contactTech": {
          "$ref": "#/definitions/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"
      ]
    },
    "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": "int64",
          "type": "integer"
        },
        "total": {
          "description": "Total cost of the domain and any selected add-ons",
          "format": "currency-micro-unit",
          "type": "integer"
        }
      },
      "required": [
        "orderId",
        "itemCount",
        "total"
      ]
    },
    "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"
        }
      }
    },
    "DomainSuggestion": {
      "properties": {
        "domain": {
          "description": "Suggested domain name",
          "type": "string"
        }
      },
      "required": [
        "domain"
      ]
    },
    "DomainSummary": {
      "properties": {
        "authCode": {
          "description": "Authorization code for transferring the Domain",
          "type": "string"
        },
        "contactAdmin": {
          "$ref": "#/definitions/Contact",
          "description": "Administrative contact for the domain registration"
        },
        "contactBilling": {
          "$ref": "#/definitions/Contact",
          "description": "Billing contact for the domain registration"
        },
        "contactRegistrant": {
          "$ref": "#/definitions/Contact",
          "description": "Registration contact for the domain"
        },
        "contactTech": {
          "$ref": "#/definitions/Contact",
          "description": "Technical contact for the domain registration"
        },
        "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<br/><ul>\n<li><strong style='margin-left: 12px;'>ACTIVE</strong> - All is well</li>\n<li><strong style='margin-left: 12px;'>AWAITING*</strong> - System is waiting for the end-user to complete an action</li>\n<li><strong style='margin-left: 12px;'>CANCELLED*</strong> - Domain has been cancelled, and may or may not be reclaimable</li>\n<li><strong style='margin-left: 12px;'>CONFISCATED</strong> - Domain has been confiscated, usually for abuse, chargeback, or fraud</li>\n<li><strong style='margin-left: 12px;'>DISABLED*</strong> - Domain has been disabled</li>\n<li><strong style='margin-left: 12px;'>EXCLUDED*</strong> - Domain has been excluded from Firehose registration</li>\n<li><strong style='margin-left: 12px;'>EXPIRED*</strong> - Domain has expired</li>\n<li><strong style='margin-left: 12px;'>FAILED*</strong> - Domain has failed a required action, and the system is no longer retrying</li>\n<li><strong style='margin-left: 12px;'>HELD*</strong> - Domain has been placed on hold, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>LOCKED*</strong> - Domain has been locked, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>PARKED*</strong> - Domain has been parked, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>PENDING*</strong> - Domain is working its way through an automated workflow</li>\n<li><strong style='margin-left: 12px;'>RESERVED*</strong> - Domain is reserved, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>REVERTED</strong> - Domain has been reverted, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>SUSPENDED*</strong> - Domain has been suspended, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>TRANSFERRED*</strong> - Domain has been transferred out</li>\n<li><strong style='margin-left: 12px;'>UNKNOWN</strong> - Domain is in an unknown state</li>\n<li><strong style='margin-left: 12px;'>UNLOCKED*</strong> - Domain has been unlocked, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>UNPARKED*</strong> - Domain has been unparked, and likely requires intervention from Support</li>\n<li><strong style='margin-left: 12px;'>UPDATED*</strong> - Domain ownership has been transferred to another account</li>\n</ul>",
          "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"
      ]
    },
    "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."
        }
      }
    },
    "DomainForwardingCreate": {
      "properties": {
        "type": {
          "type": "string",
          "default": "REDIRECT_PERMANENT",
          "enum": [
            "MASKED",
            "REDIRECT_PERMANENT",
            "REDIRECT_TEMPORARY"
          ],
          "description": "The type of fowarding to implement<br/><ul><li><strong style='margin-left: 12px;'>MASKED</strong> - Prevents the forwarded domain or subdomain URL from displaying in the browser's address bar.</li><li><strong style='margin-left: 12px;'>REDIRECT_PERMANENT*</strong> - Redirects to the url you specified in the forwardTo field using a `301 Moved Permanently` HTTP response. The HTTP 301 response code tells user-agents (including search engines) that the location has permanently moved.</li><li><strong style='margin-left: 12px;'>REDIRECT_TEMPORARY</strong> - Redirects to the url you specified in the forwardTo field using a `302 Found` HTTP response. The HTTP 302 response code tells user-agents (including search engines) that the location has temporarily moved.</li></ul>"
        },
        "url": {
          "type": "string",
          "format": "url",
          "description": "Forwards http(s) traffic to this destination url (ex. http://www.somedomain.com/)"
        },
        "mask": {
          "$ref": "#/definitions/DomainForwardingMask",
          "description": "Additional configuration that can be provided when type = 'MASKED'"
        }
      },
      "required": [
        "type",
        "url"
      ]
    },
    "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 fowarding to implement<br/><ul><li><strong style='margin-left: 12px;'>MASKED</strong> - Prevents the forwarded domain or subdomain URL from displaying in the browser's address bar.</li><li><strong style='margin-left: 12px;'>REDIRECT_PERMANENT*</strong> - Redirects to the url you specified in the forwardTo field using a `301 Moved Permanently` HTTP response. The HTTP 301 response code tells user-agents (including search engines) that the location has permanently moved.</li><li><strong style='margin-left: 12px;'>REDIRECT_TEMPORARY</strong> - Redirects to the url you specified in the forwardTo field using a `302 Found` HTTP response. The HTTP 302 response code tells user-agents (including search engines) that the location has temporarily moved.</li></ul>"
        },
        "url": {
          "type": "string",
          "format": "url",
          "description": "Forwards http(s) traffic to this destination url (ex. http://www.somedomain.com/)"
        },
        "mask": {
          "$ref": "#/definitions/DomainForwardingMask",
          "description": "Additional configuration that can be provided when type = 'MASKED'"
        }
      },
      "required": [
        "fqdn",
        "type",
        "url"
      ]
    },
    "DomainRedeemV2": {
      "additionalProperties": false,
      "properties": {
        "consent": {
          "$ref": "#/definitions/ConsentRedemption"
        }
      },
      "required": [
        "consent"
      ]
    },
    "DomainTransferIn": {
      "properties": {
        "authCode": {
          "description": "Authorization code from registrar for transferring a domain",
          "type": "string"
        },
        "consent": {
          "$ref": "#/definitions/Consent",
          "description": "Required agreements can be retrieved via the GET ./domains/agreements endpoint"
        },
        "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": "#/definitions/Contact",
          "description": "The contact to use for the domain admin contact. Depending on the tld of the domain being transferred, this field may be required."
        },
        "contactBilling": {
          "$ref": "#/definitions/Contact",
          "description": "The contact to use for the domain billing contact. Depending on the tld of the domain being transferred, this field may be required."
        },
        "contactRegistrant": {
          "$ref": "#/definitions/Contact",
          "description": "The contact to use for the domain registrant contact. Depending on the tld of the domain being transferred, this field may be required."
        },
        "contactTech": {
          "$ref": "#/definitions/Contact",
          "description": "The contact to use for the domain tech contact. Depending on the tld of the domain being transferred, this field may be required."
        }
      },
      "required": [
        "authCode",
        "consent"
      ]
    },
    "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"
        },
        "exposeWhois": {
          "description": "Whether or not the domain contact details should be shown in the WHOIS",
          "type": "boolean"
        },
        "consent": {
          "$ref": "#/definitions/ConsentDomainUpdate"
        }
      }
    },
    "DomainsContactsBulk": {
      "properties": {
        "contactAdmin": {
          "$ref": "#/definitions/Contact"
        },
        "contactBilling": {
          "$ref": "#/definitions/Contact"
        },
        "contactPresence": {
          "$ref": "#/definitions/Contact"
        },
        "contactRegistrant": {
          "$ref": "#/definitions/Contact"
        },
        "contactTech": {
          "$ref": "#/definitions/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"
      ]
    },
    "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": "1) JSONPath referring to the field within the data containing an error<br/>or<br/>2) JSONPath referring to 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"
      ]
    },
    "JsonDataType": {
      "properties": {
        "format": {
          "type": "string"
        },
        "pattern": {
          "type": "string"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type",
        "$ref"
      ]
    },
    "JsonProperty": {
      "properties": {
        "defaultValue": {
          "type": "string"
        },
        "format": {
          "type": "string"
        },
        "items": {
          "items": {
            "$ref": "#/definitions/JsonDataType"
          },
          "type": "object"
        },
        "maxItems": {
          "type": "integer"
        },
        "maximum": {
          "type": "integer"
        },
        "minItems": {
          "type": "integer"
        },
        "minimum": {
          "type": "integer"
        },
        "pattern": {
          "type": "string"
        },
        "required": {
          "type": "boolean"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type",
        "$ref",
        "required"
      ]
    },
    "JsonSchema": {
      "properties": {
        "id": {
          "type": "string"
        },
        "models": {
          "items": {
            "$ref": "#/definitions/JsonSchema"
          },
          "type": "object"
        },
        "properties": {
          "items": {
            "$ref": "#/definitions/JsonProperty"
          },
          "type": "object"
        },
        "required": {
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "id",
        "properties",
        "required",
        "models"
      ]
    },
    "Maintenance": {
      "additionalProperties": false,
      "properties": {
        "createdAt": {
          "description": "Date and time (UTC) when this maintenance was created",
          "type": "string",
          "format": "iso-datetime"
        },
        "endsAt": {
          "description": "Date and time (UTC) when this maintenance will complete",
          "type": "string",
          "format": "iso-datetime"
        },
        "environment": {
          "type": "string",
          "enum": [
            "OTE",
            "PRODUCTION"
          ],
          "description": "The environment on which the maintenance will be performed<br/><ul><li><strong style='margin-left: 12px;'>OTE</strong> - The Operational Testing Environment.</li><li><strong style='margin-left: 12px;'>PRODUCTION</strong> - The Live Production Environment.</li></ul>"
        },
        "maintenanceId": {
          "type": "string",
          "description": "The identifier for the system maintenance"
        },
        "modifiedAt": {
          "type": "string",
          "format": "iso-datetime",
          "description": "Date and time (UTC) when this maintenance was last modified"
        },
        "reason": {
          "type": "string",
          "enum": [
            "EMERGENCY",
            "PLANNED"
          ],
          "description": "The reason for the maintenance being performed<br/><ul><li><strong style='margin-left: 12px;'>EMERGENCY</strong> - Unexpected Emergency maintenance.</li><li><strong style='margin-left: 12px;'>PLANNED</strong> - Planned system maintenance.</li></ul>"
        },
        "startsAt": {
          "type": "string",
          "format": "iso-datetime",
          "description": "Date and time (UTC) when this maintenance will start"
        },
        "status": {
          "type": "string",
          "enum": [
            "ACTIVE",
            "CANCELLED"
          ],
          "description": "The status of maintenance<br/><ul><li><strong style='margin-left: 12px;'>ACTIVE</strong> - The upcoming maintenance is active.</li><li><strong style='margin-left: 12px;'>CANCELLED</strong> - The upcoming maintenance has been cancelled.</li></ul>"
        },
        "summary": {
          "type": "string",
          "description": "A brief description of what is being performed"
        },
        "tlds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of tlds that are in maintenance.  Generally only applies when `type` is REGISTRY"
        },
        "type": {
          "type": "string",
          "enum": [
            "API",
            "REGISTRY",
            "UI"
          ],
          "description": "The type of maintenance being performed<br/><ul><li><strong style='margin-left: 12px;'>API</strong> - Programmatic Api components.</li><li><strong style='margin-left: 12px;'>REGISTRY</strong> - The underlying Registry providing the tld(s).</li><li><strong style='margin-left: 12px;'>UI</strong> - User Interface components.</li></ul>"
        }
      },
      "required": [
        "createdAt",
        "endsAt",
        "environment",
        "maintenanceId",
        "modifiedAt",
        "reason",
        "startsAt",
        "status",
        "summary",
        "type"
      ]
    },
    "MaintenanceDetail": {
      "additionalProperties": false,
      "properties": {
        "createdAt": {
          "description": "Date and time (UTC) when this maintenance was created",
          "type": "string",
          "format": "iso-datetime"
        },
        "endsAt": {
          "description": "Date and time (UTC) when this maintenance will complete",
          "type": "string",
          "format": "iso-datetime"
        },
        "environment": {
          "type": "string",
          "enum": [
            "OTE",
            "PRODUCTION"
          ],
          "description": "The environment on which the maintenance will be performed<br/><ul><li><strong style='margin-left: 12px;'>OTE</strong> - The Operational Testing Environment.</li><li><strong style='margin-left: 12px;'>PRODUCTION</strong> - The Live Production Environment.</li></ul>"
        },
        "maintenanceId": {
          "type": "string",
          "description": "The identifier for the system maintenance"
        },
        "modifiedAt": {
          "type": "string",
          "format": "iso-datetime",
          "description": "Date and time (UTC) when this maintenance was last modified"
        },
        "reason": {
          "type": "string",
          "enum": [
            "EMERGENCY",
            "PLANNED"
          ],
          "description": "The reason for the maintenance being performed<br/><ul><li><strong style='margin-left: 12px;'>EMERGENCY</strong> - Unexpected Emergency maintenance.</li><li><strong style='margin-left: 12px;'>PLANNED</strong> - Planned system maintenance.</li></ul>"
        },
        "startsAt": {
          "type": "string",
          "format": "iso-datetime",
          "description": "Date and time (UTC) when this maintenance will start"
        },
        "status": {
          "type": "string",
          "enum": [
            "ACTIVE",
            "CANCELLED"
          ],
          "description": "The status of maintenance<br/><ul><li><strong style='margin-left: 12px;'>ACTIVE</strong> - The upcoming maintenance is active.</li><li><strong style='margin-left: 12px;'>CANCELLED</strong> - The upcoming maintenance has been cancelled.</li></ul>"
        },
        "summary": {
          "type": "string",
          "description": "A brief description of what is being performed"
        },
        "systems": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MaintenanceSystem"
          },
          "description": "List of systems that are impacted by the maintenance."
        },
        "tlds": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "List of tlds that are in maintenance.  Generally only applies when `type` is REGISTRY"
        },
        "type": {
          "type": "string",
          "enum": [
            "API",
            "REGISTRY",
            "UI"
          ],
          "description": "The type of maintenance being performed<br/><ul><li><strong style='margin-left: 12px;'>API</strong> - Programmatic Api components.</li><li><strong style='margin-left: 12px;'>REGISTRY</strong> - The underlying Registry providing the tld(s).</li><li><strong style='margin-left: 12px;'>UI</strong> - User Interface components.</li></ul>"
        }
      },
      "required": [
        "createdAt",
        "endsAt",
        "environment",
        "maintenanceId",
        "modifiedAt",
        "reason",
        "startsAt",
        "status",
        "summary",
        "type"
      ]
    },
    "MaintenanceSystem": {
      "additionalProperties": false,
      "properties": {
        "name": {
          "type": "string",
          "enum": [
            "DOMAIN_CHECKS",
            "DOMAIN_MANAGEMENT",
            "DOMAIN_REGISTRATION",
            "DOMAIN_REGISTRATION_DATA",
            "DOMAIN_RESOLUTION",
            "RESELLER_ADMIN_PORTAL",
            "RESELLER_STOREFRONT"
          ],
          "description": "The name of the system affected by the maintenance<br/><ul><li><strong style='margin-left: 12px;'>DOMAIN_CHECKS</strong> - Refers to domain availability checks.</li><li><strong style='margin-left: 12px;'>DOMAIN_MANAGEMENT</strong> - Refers to domain management options including various update options on the domain, contacts, records, etc.</li><li><strong style='margin-left: 12px;'>DOMAIN_REGISTRATION</strong> - Refers to domain registrations, renewals, transfers.</li><li><strong style='margin-left: 12px;'>DOMAIN_REGISTRATION_DATA</strong> - Refers to RDAP and WHOIS Service queries for domains.</li><li><strong style='margin-left: 12px;'>DOMAIN_RESOLUTION</strong> - Refers to DNS resolution for domains.</li><li><strong style='margin-left: 12px;'>RESELLER_ADMIN_PORTAL</strong> - Refers to Admin portals to manage the reseller account and settings.</li><li><strong style='margin-left: 12px;'>RESELLER_STOREFRONT</strong> - Refers to the Reseller Storefront features (Standard and Custom).</li></ul>"
        },
        "impact": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "DELAYED",
              "DOWN",
              "NON_AUTHORITATIVE",
              "PARTIAL"
            ]
          },
          "description": "The impact of the maintenance to the system<br/><ul><li><strong style='margin-left: 12px;'>DELAYED</strong> - This response generally applies to systems where the request is queued up and processed once the system is back online.</li><li><strong style='margin-left: 12px;'>DOWN</strong> - The system will be entirely offline; errors are expected.</li><li><strong style='margin-left: 12px;'>NON_AUTHORITATIVE</strong> - This response generally applies to DOMAIN_CHECKS and DOMAIN_MANAGEMENT `system` values where a cached answer will be supplied.</li><li><strong style='margin-left: 12px;'>PARTIAL</strong> - The system will experience partial feature outages; some errors are expected.</li></ul>"
        }
      },
      "required": [
        "name",
        "impact"
      ]
    },
    "PrivacyPurchase": {
      "properties": {
        "consent": {
          "$ref": "#/definitions/Consent",
          "description": "Specify agreement `DNPA`.  Required agreements can be retrieved via the GET ./domains/agreements endpoint"
        }
      },
      "required": [
        "consent"
      ]
    },
    "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"
        }
      }
    },
    "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"
      ]
    },
    "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"
      ]
    },
    "VerificationDomainName": {
      "properties": {
        "status": {
          "description": "Status of the domain name verification",
          "enum": [
            "APPROVED",
            "PENDING",
            "REJECTED",
            "UNABLE_TO_RETRIEVE_STATUS"
          ],
          "type": "string"
        }
      },
      "required": [
        "status"
      ]
    },
    "VerificationRealName": {
      "properties": {
        "status": {
          "description": "Status of the real name verification<br/><ul> <li><strong style='margin-left: 12px;'>APPROVED</strong> - All is well</li> <li><strong style='margin-left: 12px;'>PENDING</strong> - Real name verification is working its way through the workflow</li> <li><strong style='margin-left: 12px;'>REJECTED_DOCUMENT_OUTDATED</strong> - Local government verification shows there is a newer version of your document.  Upload the latest version of the document and retry real name verification</li> <li><strong style='margin-left: 12px;'>REJECTED_EXPIRED_BUSINESS_LICENSE</strong> - Business license is expired</li> <li><strong style='margin-left: 12px;'>REJECTED_EXPIRED_ORGANIZATION_CODE</strong> - Organization code certificate number has expired</li> <li><strong style='margin-left: 12px;'>REJECTED_ILLEGIBLE_DOCUMENT_NAME</strong> - There isn’t a clear name on your uploaded document, please upload a different document to retry real name verification</li> <li><strong style='margin-left: 12px;'>REJECTED_ILLEGIBLE_IDENTIFICATION</strong> - Registrant identification is not clear.  Upload a better image to retry</li> <li><strong style='margin-left: 12px;'>REJECTED_INCOMPLETE_IDENTIFICATION</strong> - Registrant identification is incomplete</li> <li><strong style='margin-left: 12px;'>REJECTED_INCOMPLETE_REGISTRATION_LETTER</strong> - Registration letter is incomplete</li> <li><strong style='margin-left: 12px;'>REJECTED_INCONSISTENT_IDENTITY_CARD</strong> - Provided identity card is inconsistent with the identity card on record</li> <li><strong style='margin-left: 12px;'>REJECTED_INCONSISTENT_ORGANIZATION_CODE</strong> - Provided organization information is inconsistent with the results obtained using the submitted organization code</li> <li><strong style='margin-left: 12px;'>REJECTED_INCONSISTENT_REGISTRANT_NAME</strong> - Name on the registrant identification does not match the name in the system</li> <li><strong style='margin-left: 12px;'>REJECTED_INVALID_BUSINESS_LICENSE_OR_ORGANIZATION_CODE</strong> - Your document contains an invalid business license or organization code certificate number</li> <li><strong style='margin-left: 12px;'>REJECTED_INVALID_DOCUMENT</strong> - Document is invalid.  Please upload another document to retry real name verification</li> <li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_BUSINESS_ID</strong> - Business id does not match the business id in the document</li> <li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_BUSINESS_NAME</strong> - Business name does not match the business name in the document</li> <li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_DOCUMENT_ID</strong> - Document id does not match the id in the document</li> <li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_DOCUMENT_NAME</strong> - Document name does not match the name in the document</li> <li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_DOCUMENT_TYPE</strong> - Document type does not match the document</li> <li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_REGISTRANT_INFO</strong> - The information provided for the registrant does not match the document</li> <li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_REGISTRANT_LOCALITY</strong> - Registrant region is overseas, but a local identity document was provided</li> <li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_REGISTRANT_NAME</strong> - Registrant name has been changed, so the request must be resubmitted</li> <li><strong style='margin-left: 12px;'>REJECTED_UNABLE_TO_OPEN</strong> - Registrant identification could not be opened.  Please upload the document again to retry real name verification</li> <li><strong style='margin-left: 12px;'>REJECTED_UNABLE_TO_VERIFY</strong> - Unable to initiate verification.  Please upload the document again to retry real name verification</li> <li><strong style='margin-left: 12px;'>REJECTED_UNKNOWN_ERROR</strong> - Document was rejected due to an unknown error. For more information, contact customer support</li> <li><strong style='margin-left: 12px;'>UNABLE_TO_RETRIEVE_STATUS</strong> - Unable to retrieve status for the real name verification process.  Retry, if this status persists, contact customer support</li> </ul>",
          "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"
      ]
    },
    "VerificationsDomain": {
      "properties": {
        "domainName": {
          "$ref": "#/definitions/VerificationDomainName",
          "description": "Verification of domain name against a prohibited list maintained by the government"
        },
        "realName": {
          "$ref": "#/definitions/VerificationRealName",
          "description": "Verification of identity by comparing registration data against government issued documents"
        }
      }
    },
    "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<br/><ul><li><strong style='margin-left: 12px;'>COMPLETED</strong> - Icann verification has been completed.</li><li><strong style='margin-left: 12px;'>PENDING</strong> - Icann verification has not been completed.</li></ul>"
        },
        "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<br/><ul><li><strong style='margin-left: 12px;'>APPROVED</strong> - All is well</li><li><strong style='margin-left: 12px;'>PENDING</strong> - Real name verification is working its way through the workflow</li><li><strong style='margin-left: 12px;'>REJECTED_DOCUMENT_OUTDATED</strong> - Local government verification shows there is a newer version of your document.  Upload the latest version of the document and retry real name verification</li><li><strong style='margin-left: 12px;'>REJECTED_EXPIRED_BUSINESS_LICENSE</strong> - Business license is expired</li><li><strong style='margin-left: 12px;'>REJECTED_EXPIRED_ORGANIZATION_CODE</strong> - Organization code certificate number has expired</li><li><strong style='margin-left: 12px;'>REJECTED_ILLEGIBLE_DOCUMENT_NAME</strong> - There isn’t a clear name on your uploaded document, please upload a different document to retry real name verification</li><li><strong style='margin-left: 12px;'>REJECTED_ILLEGIBLE_IDENTIFICATION</strong> - Registrant identification is not clear.  Upload a better image to retry</li><li><strong style='margin-left: 12px;'>REJECTED_INCOMPLETE_IDENTIFICATION</strong> - Registrant identification is incomplete</li><li><strong style='margin-left: 12px;'>REJECTED_INCOMPLETE_REGISTRATION_LETTER</strong> - Registration letter is incomplete</li><li><strong style='margin-left: 12px;'>REJECTED_INCONSISTENT_IDENTITY_CARD</strong> - Provided identity card is inconsistent with the identity card on record</li><li><strong style='margin-left: 12px;'>REJECTED_INCONSISTENT_ORGANIZATION_CODE</strong> - Provided organization information is inconsistent with the results obtained using the submitted organization code</li><li><strong style='margin-left: 12px;'>REJECTED_INCONSISTENT_REGISTRANT_NAME</strong> - Name on the registrant identification does not match the name in the system</li><li><strong style='margin-left: 12px;'>REJECTED_INVALID_BUSINESS_LICENSE_OR_ORGANIZATION_CODE</strong> - Your document contains an invalid business license or organization code certificate number</li><li><strong style='margin-left: 12px;'>REJECTED_INVALID_DOCUMENT</strong> - Document is invalid.  Please upload another document to retry real name verification</li><li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_BUSINESS_ID</strong> - Business id does not match the business id in the document</li><li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_BUSINESS_NAME</strong> - Business name does not match the business name in the document</li><li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_DOCUMENT_ID</strong> - Document id does not match the id in the document</li><li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_DOCUMENT_NAME</strong> - Document name does not match the name in the document</li><li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_DOCUMENT_TYPE</strong> - Document type does not match the document</li><li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_REGISTRANT_INFO</strong> - The information provided for the registrant does not match the document</li><li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_REGISTRANT_LOCALITY</strong> - Registrant region is overseas, but a local identity document was provided</li><li><strong style='margin-left: 12px;'>REJECTED_MISMATCH_REGISTRANT_NAME</strong> - Registrant name has been changed, so the request must be resubmitted</li><li><strong style='margin-left: 12px;'>REJECTED_UNABLE_TO_OPEN</strong> - Registrant identification could not be opened.  Please upload the document again to retry real name verification</li><li><strong style='margin-left: 12px;'>REJECTED_UNABLE_TO_VERIFY</strong> - Unable to initiate verification.  Please upload the document again to retry real name verification</li><li><strong style='margin-left: 12px;'>REJECTED_UNKNOWN_ERROR</strong> - Document was rejected due to an unknown error. For more information, contact customer support</li><li><strong style='margin-left: 12px;'>UNABLE_TO_RETRIEVE_STATUS</strong> - Unable to retrieve status for the real name verification process.  Retry, if this status persists, contact customer support</li></ul>"
        },
        "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"
        }
      }
    },
    "domain": {
      "properties": {
        "id": {
          "format": "double",
          "type": "number"
        }
      }
    },
    "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": "#/definitions/ErrorFieldDomainContactsValidate"
          },
          "type": "array"
        },
        "message": {
          "description": "Human-readable, English description of the error",
          "type": "string"
        },
        "stack": {
          "description": "Stack trace indicating where the error occurred.<br/>NOTE: This attribute <strong>MAY</strong> be included for Development and Test environments. However, it <strong>MUST NOT</strong> be exposed from OTE nor Production systems",
          "items": {
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "code"
      ]
    },
    "BillTo": {
      "properties": {
        "contact": {
          "$ref": "#/definitions/Contact",
          "description": "Billing contact"
        },
        "taxId": {
          "description": "Tax id used for calculating the tax the customer is required to pay",
          "type": "string"
        }
      },
      "required": [
        "contact"
      ]
    },
    "LineItem": {
      "properties": {
        "domains": {
          "description": "A collection of domain names purchased if the current product is domain",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "label": {
          "description": "Human readable description of the current product",
          "type": "string"
        },
        "period": {
          "default": 1,
          "format": "double",
          "type": "number"
        },
        "periodUnit": {
          "default": "MONTH",
          "description": "The unit of time that periodCount is measured in",
          "enum": [
            "MONTH",
            "QUARTER",
            "SEMI_ANNUAL",
            "YEAR",
            "ONE_TIME"
          ],
          "type": "string"
        },
        "pfid": {
          "description": "Unique identifier of the current product",
          "type": "integer"
        },
        "pricing": {
          "$ref": "#/definitions/LineItemPricing",
          "description": "Pricing information of the current line item"
        },
        "quantity": {
          "description": "Number of the current product included in the specified order",
          "format": "integer-positive",
          "type": "integer"
        },
        "taxCollector": {
          "$ref": "#/definitions/LineItemTaxCollector",
          "description": "Company that collects taxes on the sale of the product"
        }
      },
      "required": [
        "label",
        "quantity",
        "pricing"
      ]
    },
    "LineItemPricing": {
      "properties": {
        "discount": {
          "description": "Discount off of sale price for given `quantity` and `period` <pre>`discount` = `sale` - `subtotal`</pre>",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "fees": {
          "$ref": "#/definitions/OrderFee",
          "description": "Fees for given `quantity` and `period`"
        },
        "list": {
          "description": "List price for given `quantity` and `period`",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "sale": {
          "description": "Actual price for the current product",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "savings": {
          "description": "Savings off of list price for given `quantity` and `period` <pre>`savings` = `list` - `subtotal`</pre>",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "subtotal": {
          "description": "Price with any discounts and without taxes or fees for given `quantity` and `period`",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "taxes": {
          "description": "Taxes for given `quantity` and `period`",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "unit": {
          "description": "Pricing for a single unit of the given item",
          "type": "object"
        }
      },
      "required": [
        "subtotal",
        "list",
        "savings",
        "sale",
        "discount",
        "taxes",
        "fees",
        "unit"
      ]
    },
    "LineItemSummary": {
      "properties": {
        "label": {
          "description": "Product label of the current line item",
          "type": "string"
        }
      },
      "required": [
        "label"
      ]
    },
    "LineItemTaxCollector": {
      "properties": {
        "taxCollectorId": {
          "description": "Unique identifier for the company",
          "format": "integer-positive",
          "type": "integer"
        }
      },
      "required": [
        "taxCollectorId"
      ]
    },
    "LineItemPricingTaxDetail": {
      "properties": {
        "amount": {
          "description": "Tax amount",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "rate": {
          "format": "double",
          "type": "number"
        }
      },
      "required": [
        ""
      ]
    },
    "LineItemUnitPricing": {
      "properties": {
        "discount": {
          "description": "Discount without consideration of `quantity` and `period`",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "fees": {
          "$ref": "#/definitions/OrderFee",
          "description": "Fees without consideration of `quantity` and `period`"
        },
        "list": {
          "description": "List price without consideration of `quantity` and `period`",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "sale": {
          "description": "Sale price without consideration of `quantity` and `period`",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "savings": {
          "description": "Savings without consideration of `quantity` and `period`",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "taxes": {
          "description": "Taxes without consideration of `quantity` and `period`",
          "format": "currency-micro-unit",
          "type": "integer"
        }
      },
      "required": [
        "discount",
        "fees",
        "list",
        "sale",
        "savings",
        "taxes"
      ]
    },
    "Order": {
      "properties": {
        "billTo": {
          "$ref": "#/definitions/BillTo",
          "description": "The billing contact information that was used at the time of purchase"
        },
        "createdAt": {
          "description": "Date and time when the current order is created on",
          "format": "iso-datetime",
          "type": "string"
        },
        "currency": {
          "description": "Currency in which the order has been placed",
          "format": "iso-currency-code",
          "type": "string"
        },
        "items": {
          "items": {
            "$ref": "#/definitions/LineItem"
          },
          "type": "array"
        },
        "orderId": {
          "description": "Unique identifier of current order",
          "type": "string"
        },
        "parentOrderId": {
          "description": "Unique identifier of the parent order. All refund/chargeback orders are tied to the original order.\nThe orginal order's `orderId` is the `parentOrderId` of refund/chargeback orders",
          "type": "string"
        },
        "payments": {
          "items": {
            "$ref": "#/definitions/Payment"
          },
          "type": "array"
        },
        "pricing": {
          "$ref": "#/definitions/OrderPricing",
          "description": "Pricing information for current order"
        }
      },
      "required": [
        "orderId",
        "currency",
        "createdAt",
        "pricing",
        "billTo",
        "payments",
        "items"
      ]
    },
    "OrderFee": {
      "properties": {
        "icann": {
          "description": "Domain registration transaction fee charged by ICANN",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "total": {
          "description": "Sum of all fees",
          "format": "currency-micro-unit",
          "type": "integer"
        }
      },
      "required": [
        "total"
      ]
    },
    "OrderList": {
      "properties": {
        "orders": {
          "description": "A collection of orders",
          "items": {
            "$ref": "#/definitions/OrderSummary"
          },
          "type": "array"
        },
        "pagination": {
          "$ref": "#/definitions/Pagination",
          "description": "Pagination information"
        }
      },
      "required": [
        "orders",
        "pagination"
      ]
    },
    "OrderPricing": {
      "properties": {
        "discount": {
          "description": "Discount from promotional pricing",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "fees": {
          "$ref": "#/definitions/OrderFee",
          "description": "Fees for the entire cart"
        },
        "id": {
          "format": "double",
          "type": "number"
        },
        "list": {
          "description": "Sum of list prices for the entire cart",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "savings": {
          "description": "Savings off of list price <pre>`savings` = `list` - `subtotal`</pre>",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "subtotal": {
          "description": "Price with `discount` and without taxes or fees",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "taxes": {
          "description": "Taxes for the entire cart",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "taxDetails": {
          "description": "A collection of line item tax details",
          "items": {
            "$ref": "#/definitions/LineItemPricingTaxDetail"
          },
          "type": "array"
        },
        "total": {
          "description": "Price the customer pays <pre>`total` = `subtotal` + `taxes` + `fees.total`</pre>",
          "format": "currency-micro-unit",
          "type": "integer"
        }
      },
      "required": [
        "total",
        "subtotal",
        "list",
        "savings",
        "discount",
        "taxes",
        "fees"
      ]
    },
    "OrderSummary": {
      "properties": {
        "createdAt": {
          "description": "Date and time when the current order was created",
          "format": "iso-datetime",
          "type": "string"
        },
        "currency": {
          "description": "Currency in which the order was placed",
          "format": "iso-currency-code",
          "type": "string"
        },
        "items": {
          "description": "Sets of two or more line items in current order",
          "items": {
            "$ref": "#/definitions/LineItemSummary"
          },
          "type": "array"
        },
        "orderId": {
          "description": "Unique identifier of the current order",
          "type": "string"
        },
        "parentOrderId": {
          "description": "Unique identifier of the parent order. All refund/chargeback orders are tied to the original order.\nThe orginal order's `orderId` is the `parentOrderId` of refund/chargeback orders",
          "type": "string"
        },
        "pricing": {
          "$ref": "#/definitions/OrderSummaryPricing",
          "description": "Pricing information of the current order"
        }
      },
      "required": [
        "orderId",
        "currency",
        "createdAt",
        "pricing",
        "items"
      ]
    },
    "OrderSummaryPricing": {
      "properties": {
        "total": {
          "description": "Total amount charged for the current order. Negative for Refund and Chargeback",
          "format": "currency-micro-unit",
          "type": "string"
        }
      },
      "required": [
        "total"
      ]
    },
    "Payment": {
      "properties": {
        "amount": {
          "description": "Amount paid by the current payment",
          "format": "currency-micro-unit",
          "type": "integer"
        },
        "category": {
          "description": "The category of payment method used at the time of purchase.\nMost common values are listed in the enum.",
          "enum": [
            "CREDIT_CARD",
            "PAYPAL",
            "ACH",
            "GIFT_CARD",
            "IN_STORE_CREDIT",
            "PREPAID"
          ],
          "type": "string"
        },
        "paymentProfileId": {
          "description": "Unique identifier of the payment profile used by current payment",
          "type": "string"
        },
        "subcategory": {
          "description": "The subcategory of payment method used at the time of purchase.\n This field is only set for certain payment categories, such as ACH and CREDIT_CARD.\nMost common values are listed in the enum.",
          "enum": [
            "CHECKING_PERSONAL",
            "CHECKING_BUSINESS",
            "VISA",
            "MASTER_CARD",
            "AMEX",
            "JCB",
            "UNIONPAY"
          ],
          "type": "string"
        }
      },
      "required": [
        "paymentProfileId",
        "amount",
        "category"
      ]
    },
    "MetricList": {
      "type": "object",
      "properties": {
        "currencyId": {
          "type": "string",
          "description": "The currencyId in which `revenue` is returned",
          "example": "USD",
          "enum": [
            "USD"
          ]
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Metrics"
          },
          "description": "Metrics"
        },
        "pagination": {
          "$ref": "#/definitions/Pagination"
        }
      },
      "required": [
        "currencyId",
        "metrics",
        "pagination"
      ]
    },
    "Metrics": {
      "type": "object",
      "properties": {
        "adClickCount": {
          "description": "Number of ad clicks for the domain",
          "type": "integer"
        },
        "periodPtz": {
          "description": "Period indicating the day of the result. ISO 8601 date YYYY-MM-DD in Pacific Time Zone",
          "format": "iso-datetime",
          "type": "string"
        },
        "revenue": {
          "description": "Revenue earned for the domain, using micro unit. 1 currency unit = 1,000,000 micro unit. For example, 1 USD = 1,000,000 micro unit with `USD` as `currency`",
          "type": "integer"
        },
        "visitCount": {
          "description": "Number of visits for the domain",
          "type": "integer"
        }
      },
      "example": {
        "adClickCount": 4,
        "periodPtz": "2020-02-05",
        "revenue": 4000000,
        "visitCount": 22
      },
      "required": [
        "adClickCount",
        "periodPtz",
        "revenue",
        "visitCount"
      ]
    },
    "MetricByDomainList": {
      "type": "object",
      "properties": {
        "currencyId": {
          "type": "string",
          "description": "The currencyId in which `revenue` is returned",
          "example": "USD",
          "enum": [
            "USD"
          ]
        },
        "metrics": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/MetricsByDomain"
          },
          "description": "Metrics"
        },
        "pagination": {
          "$ref": "#/definitions/Pagination"
        },
        "startDate": {
          "description": "Start of range indicating what time-frame should be returned, inclusive. ISO 8601 date YYYY-MM-DD",
          "format": "iso-datetime",
          "type": "string"
        },
        "endDate": {
          "description": "End of range indicating what time-frame should be returned, inclusive. ISO 8601 date YYYY-MM-DD",
          "format": "iso-datetime",
          "type": "string"
        }
      },
      "required": [
        "currencyId",
        "metrics",
        "pagination",
        "startDate",
        "endDate"
      ]
    },
    "MetricsByDomain": {
      "title": "Metrics By Domain",
      "type": "object",
      "properties": {
        "adClickCount": {
          "description": "Number of ad clicks for the domain",
          "type": "integer"
        },
        "domain": {
          "description": "The root domain without any subdomains",
          "format": "domain",
          "type": "string"
        },
        "revenue": {
          "description": "Revenue earned for the domain, using micro unit. 1 currency unit = 1,000,000 micro unit. For example, 1 USD = 1,000,000 micro unit with `USD` as `currency`",
          "type": "integer"
        },
        "visitCount": {
          "description": "Number of visits for the domain",
          "type": "integer"
        },
        "pageViewCount": {
          "description": "Number of page views for the domain",
          "type": "integer"
        }
      },
      "example": {
        "adClickCount": 3,
        "domain": "example.com",
        "pageViewCount": 4,
        "revenue": 3000000,
        "visitCount": 30
      },
      "required": [
        "adClickCount",
        "domain",
        "revenue",
        "visitCount",
        "pageViewCount"
      ]
    },
    "Shopper": {
      "properties": {
        "customerId": {
          "description": "Identifier for the Customer record associated with this Shopper record. This is an alternate identifier that some systems use to identify an individual shopper record",
          "type": "string"
        },
        "email": {
          "format": "email",
          "type": "string"
        },
        "externalId": {
          "type": "integer"
        },
        "marketId": {
          "default": "en-US",
          "format": "bcp-47",
          "type": "string"
        },
        "nameFirst": {
          "type": "string"
        },
        "nameLast": {
          "type": "string"
        },
        "shopperId": {
          "type": "string"
        }
      },
      "required": [
        "shopperId",
        "nameFirst",
        "nameLast",
        "email",
        "marketId"
      ]
    },
    "ShopperId": {
      "properties": {
        "customerId": {
          "description": "Identifier for the Customer record associated with this Shopper record. This is an alternate identifier that some systems use to identify an individual shopper record",
          "type": "string"
        },
        "shopperId": {
          "type": "string"
        }
      },
      "required": [
        "shopperId"
      ]
    },
    "ShopperStatus": {
      "properties": {
        "billingState": {
          "type": "string",
          "description": "Indicates the billing state of the Shopper.<br />ABANDONED: The shopper has not been billed in at least 10 years and has no active subscriptions.<br />INACTIVE: The shopper has been billed within the last 10 years but has no active subscriptions.<br />ACTIVE: The shopper has at least one active subscription.",
          "enum": [
            "ABANDONED",
            "INACTIVE",
            "ACTIVE"
          ]
        }
      }
    },
    "ShopperUpdate": {
      "properties": {
        "email": {
          "format": "email",
          "type": "string"
        },
        "externalId": {
          "type": "integer"
        },
        "marketId": {
          "format": "bcp-47",
          "type": "string",
          "maxLength": 50,
          "enum": [
            "da-DK",
            "de-AT",
            "de-CH",
            "de-DE",
            "el-GR",
            "en-AE",
            "en-AU",
            "en-CA",
            "en-GB",
            "en-HK",
            "en-IE",
            "en-IL",
            "en-IN",
            "en-MY",
            "en-NZ",
            "en-PH",
            "en-PK",
            "en-SG",
            "en-US",
            "en-ZA",
            "es-AR",
            "es-CL",
            "es-CO",
            "es-ES",
            "es-MX",
            "es-PE",
            "es-US",
            "es-VE",
            "fi-FI",
            "fr-BE",
            "fr-CA",
            "fr-CH",
            "fr-FR",
            "hi-IN",
            "id-ID",
            "it-CH",
            "it-IT",
            "ja-JP",
            "ko-KR",
            "mr-IN",
            "nb-NO",
            "nl-BE",
            "nl-NL",
            "pl-PL",
            "pt-BR",
            "pt-PT",
            "ru-RU",
            "sv-SE",
            "ta-IN",
            "th-TH",
            "tr-TR",
            "uk-UA",
            "vi-VN",
            "zh-HK",
            "zh-SG",
            "zh-TW"
          ]
        },
        "nameFirst": {
          "type": "string"
        },
        "nameLast": {
          "type": "string"
        }
      }
    },
    "SubaccountCreate": {
      "properties": {
        "email": {
          "format": "email",
          "type": "string"
        },
        "externalId": {
          "type": "integer"
        },
        "marketId": {
          "default": "en-US",
          "format": "bcp-47",
          "type": "string",
          "maxLength": 50,
          "enum": [
            "da-DK",
            "de-AT",
            "de-CH",
            "de-DE",
            "el-GR",
            "en-AE",
            "en-AU",
            "en-CA",
            "en-GB",
            "en-HK",
            "en-IE",
            "en-IL",
            "en-IN",
            "en-MY",
            "en-NZ",
            "en-PH",
            "en-PK",
            "en-SG",
            "en-US",
            "en-ZA",
            "es-AR",
            "es-CL",
            "es-CO",
            "es-ES",
            "es-MX",
            "es-PE",
            "es-US",
            "es-VE",
            "fi-FI",
            "fr-BE",
            "fr-CA",
            "fr-CH",
            "fr-FR",
            "hi-IN",
            "id-ID",
            "it-CH",
            "it-IT",
            "ja-JP",
            "ko-KR",
            "mr-IN",
            "nb-NO",
            "nl-BE",
            "nl-NL",
            "pl-PL",
            "pt-BR",
            "pt-PT",
            "ru-RU",
            "sv-SE",
            "ta-IN",
            "th-TH",
            "tr-TR",
            "uk-UA",
            "vi-VN",
            "zh-HK",
            "zh-SG",
            "zh-TW"
          ]
        },
        "nameFirst": {
          "type": "string"
        },
        "nameLast": {
          "type": "string"
        },
        "password": {
          "format": "shopper-password",
          "type": "string"
        }
      },
      "required": [
        "email",
        "password",
        "nameFirst",
        "nameLast"
      ]
    },
    "Secret": {
      "properties": {
        "secret": {
          "description": "The secret value used to set a subaccount's password",
          "type": "string",
          "example": "P@55w0rd+"
        }
      }
    },
    "PasswordError": {
      "properties": {
        "type": {
          "description": "Response type, always 'error'",
          "type": "string"
        },
        "code": {
          "description": "Short identifier for the error, suitable for indicating the specific error within client code",
          "format": "constant",
          "type": "string",
          "enum": [
            "PW_BLACK_LIST",
            "PW_TOO_SHORT",
            "PW_TOO_LONG",
            "PW_MISSING_UC",
            "PW_MISSING_NUM",
            "PW_RECENTLY_USED",
            "PW_NOT_UNIQUE"
          ]
        },
        "message": {
          "description": "Human-readable, English description of the error",
          "type": "string"
        }
      }
    },
    "ProductGroup": {
      "properties": {
        "productGroupKey": {
          "description": "Primary key of a grouping of related Subscriptions",
          "type": "string"
        },
        "subscriptionCount": {
          "description": "The number of Subscriptions that the shopper owns in this group",
          "type": "integer"
        }
      },
      "required": [
        "productGroupKey",
        "subscriptionCount"
      ]
    },
    "Subscription": {
      "properties": {
        "addons": {
          "description": "An array of additional products that have been purchased to augment this Subscription",
          "items": {
            "$ref": "#/definitions/SubscriptionAddon"
          },
          "type": "array"
        },
        "billing": {
          "$ref": "#/definitions/SubscriptionBilling"
        },
        "cancelable": {
          "description": "Whether or not the Subscription is allowed to be canceled",
          "type": "boolean"
        },
        "createdAt": {
          "description": "When the Subscription was created",
          "format": "iso-datetime",
          "type": "string"
        },
        "expiresAt": {
          "description": "When the Subscription will expire",
          "format": "iso-datetime",
          "type": "string"
        },
        "label": {
          "description": "A human readable description of this Subscription",
          "type": "string"
        },
        "launchUrl": {
          "description": "The url to use or manage this Subscription's active product",
          "format": "url",
          "type": "string"
        },
        "paymentProfileId": {
          "description": "Unique identifier of the payment profile that will be used to automatically renew this Subscription",
          "type": "integer"
        },
        "priceLocked": {
          "description": "Whether the renewal price will be based from the list price or a locked-in price for this shopper",
          "type": "boolean"
        },
        "product": {
          "$ref": "#/definitions/SubscriptionProduct"
        },
        "relations": {
          "$ref": "#/definitions/SubscriptionRelations"
        },
        "renewAuto": {
          "description": "Whether or not the Subscription is set to be automatically renewed via the billing agent",
          "type": "boolean"
        },
        "renewable": {
          "description": "Whether or not the Subscription is allowed to be renewed",
          "type": "boolean"
        },
        "status": {
          "description": "Whether the Subscription is active or the specific non-active state",
          "enum": [
            "ACTIVE",
            "PENDING",
            "CANCELED"
          ],
          "type": "string"
        },
        "subscriptionId": {
          "description": "Unique identifier of the Subscription",
          "type": "string"
        },
        "upgradeable": {
          "description": "Whether or not the Subscription is allowed to be upgraded",
          "type": "boolean"
        }
      },
      "required": [
        "subscriptionId",
        "status",
        "product",
        "createdAt",
        "billing",
        "renewable",
        "upgradeable",
        "priceLocked",
        "renewAuto"
      ]
    },
    "SubscriptionAddon": {
      "properties": {
        "commitment": {
          "description": "The financial commitment the customer has in the product",
          "enum": [
            "PAID",
            "FREE",
            "TRIAL"
          ],
          "type": "string"
        },
        "pfid": {
          "description": "Unique identifier of the add-in product",
          "type": "integer"
        },
        "quantity": {
          "type": "integer"
        }
      },
      "required": [
        "pfid",
        "commitment",
        "quantity"
      ]
    },
    "SubscriptionBilling": {
      "properties": {
        "commitment": {
          "description": "The financial commitment the customer has in the product",
          "enum": [
            "PAID",
            "FREE",
            "TRIAL"
          ],
          "type": "string"
        },
        "pastDueTypes": {
          "description": "The types of charges that are past due when `status` is PAST_DUE",
          "items": {
            "enum": [
              "ADDON",
              "BURST",
              "SUBSCRIPTION"
            ],
            "type": "string"
          },
          "type": "array"
        },
        "renewAt": {
          "description": "The point in time after which the Subscription will bill for automatic renewal",
          "format": "iso-datetime",
          "type": "string"
        },
        "status": {
          "description": "Whether payments are past due",
          "enum": [
            "CURRENT",
            "PAST_DUE"
          ],
          "type": "string"
        }
      },
      "required": [
        "renewAt",
        "status",
        "commitment"
      ]
    },
    "SubscriptionList": {
      "properties": {
        "pagination": {
          "$ref": "#/definitions/Pagination",
          "description": "Pagination information"
        },
        "subscriptions": {
          "description": "A collection of subscriptions",
          "items": {
            "$ref": "#/definitions/Subscription"
          },
          "type": "array"
        }
      },
      "required": [
        "subscriptions",
        "pagination"
      ]
    },
    "SubscriptionProduct": {
      "properties": {
        "label": {
          "description": "A human readable description of the Product that is subscribed",
          "type": "string"
        },
        "namespace": {
          "description": "Grouping of related Subscriptions",
          "type": "string"
        },
        "pfid": {
          "description": "Unique identifier of the Product that is subscribed",
          "type": "integer"
        },
        "productGroupKey": {
          "description": "Primary key of a grouping of related Subscriptions",
          "type": "string"
        },
        "renewalPeriod": {
          "description": "The number of `renewalPeriodUnits` that will be added by the `renewalPfid`",
          "type": "integer"
        },
        "renewalPeriodUnit": {
          "description": "The unit of time that `renewalPeriod` is measured in",
          "enum": [
            "MONTH",
            "QUARTER",
            "SEMI_ANNUAL",
            "YEAR"
          ],
          "type": "string"
        },
        "renewalPfid": {
          "description": "Unique identifier of the renewal Product",
          "type": "integer"
        },
        "supportBillOn": {
          "description": "Whether the product supports the `billOn` option on the renewal endpoint",
          "type": "boolean"
        }
      },
      "required": [
        "pfid",
        "label",
        "renewalPfid",
        "renewalPeriod",
        "renewalPeriodUnit",
        "productGroupKey",
        "supportBillOn",
        "namespace"
      ]
    },
    "SubscriptionRelations": {
      "properties": {
        "children": {
          "description": "A set of related Subscriptions that will be canceled automatically if this Subscription is canceled",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "parent": {
          "description": "Unique identifier of this Subscription's parent",
          "type": "string"
        }
      }
    },
    "SubscriptionUpdate": {
      "properties": {
        "paymentProfileId": {
          "description": "Unique identifier of the payment profile you want to be used for automatic renewal",
          "type": "integer"
        },
        "renewAuto": {
          "description": "Whether or not you want the Subscription renew automatically",
          "type": "boolean"
        }
      }
    }
  }
}