{
  "consumes": [
    "application/json"
  ],
  "produces": [
    "application/json"
  ],
  "schemes": [
    "https"
  ],
  "swagger": "2.0",
  "info": {
    "description": "Documentation of the deprecated DNS Coffee API v0.\n\nAPI v0 is deprecated and frozen: every endpoint keeps working, but no new\nfeatures are added. Use API v1 instead — documentation at /doc, OpenAPI\nspec at /openapi.json.\n\nThis API allows querying the zone file collection maintained by DNS Coffee.\n\nAPI requests are rate limited. Check response headers for rate limit information or documentation below.\n\nAPI Authentication is handled by API keys. Reach out if you would like access.",
    "title": "DNS Coffee API v0 Documentation (deprecated)",
    "contact": {
      "email": "research@dns.coffee"
    },
    "version": "0.0.1"
  },
  "host": "api.dns.coffee",
  "basePath": "/api/v0",
  "paths": {
    "/auth/validate": {
      "get": {
        "description": "A call to this endpoint is not required to use the API, but may be helpful when debugging.\n\nThis v0 endpoint is deprecated and frozen; use /api/v1/auth/validate instead.",
        "tags": [
          "auth"
        ],
        "summary": "Verifies an API Key.",
        "operationId": "auth_validate",
        "deprecated": true,
        "responses": {
          "200": {
            "$ref": "#/responses/authSuccess"
          },
          "401": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/domains/{domain}": {
      "get": {
        "description": "Returns the current status of the provided domain if found.\n\nThis v0 endpoint is deprecated and frozen; use /api/v1/domains/{domain} instead.",
        "tags": [
          "domains"
        ],
        "summary": "Find domain information.",
        "operationId": "domain_info",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "EXAMPLE.COM",
            "description": "the domain",
            "name": "domain",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/domainResponse"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/domains/{domain}/nameservers/archive": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/domains/{domain}/nameservers/archive instead.",
        "tags": [
          "domains"
        ],
        "summary": "Find archived nameservers for the domain.",
        "operationId": "domain_archive_nameservers",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "EXAMPLE.COM",
            "description": "the domain",
            "name": "domain",
            "in": "path",
            "required": true
          },
          {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "example": 30,
            "description": "limits number of results returned",
            "name": "limit",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "before date filter (inclusive)",
            "name": "before",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "after date filter (inclusive)",
            "name": "after",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/nameserverList"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/domains/{domain}/nameservers/current": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/domains/{domain}/nameservers/current instead.",
        "tags": [
          "domains"
        ],
        "summary": "Find current nameservers for the domain.",
        "operationId": "domain_current_nameservers",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "EXAMPLE.COM",
            "description": "the domain",
            "name": "domain",
            "in": "path",
            "required": true
          },
          {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "example": 30,
            "description": "limits number of results returned",
            "name": "limit",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "before date filter (inclusive)",
            "name": "before",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "after date filter (inclusive)",
            "name": "after",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/nameserverList"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/feeds/domains/moved/date/{date}": {
      "get": {
        "description": "List of domains which have changed nameservers.\n\nThis v0 endpoint is deprecated and frozen; use /api/v1/feeds/domains/moved/{date} instead.",
        "tags": [
          "feeds"
        ],
        "summary": "Get a list of transferred domains.",
        "operationId": "feeds_domains_moved",
        "deprecated": true,
        "parameters": [
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "date query",
            "name": "date",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/domainFeedResponse"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/feeds/domains/new/date/{date}": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/feeds/domains/new/{date} instead.",
        "tags": [
          "feeds"
        ],
        "summary": "Get a list of new domains.",
        "operationId": "feeds_domains_new",
        "deprecated": true,
        "parameters": [
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "date query",
            "name": "date",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/domainFeedResponse"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/feeds/domains/old/date/{date}": {
      "get": {
        "description": "List of domains that no longer have a `NS` record.\n\nThis v0 endpoint is deprecated and frozen; use /api/v1/feeds/domains/old/{date} instead.",
        "tags": [
          "feeds"
        ],
        "summary": "Get a list of old domains.",
        "operationId": "feeds_domains_old",
        "deprecated": true,
        "parameters": [
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "date query",
            "name": "date",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/domainFeedResponse"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/feeds/nameservers/moved/date/{date}": {
      "get": {
        "description": "List of nameservers which have changed IP Addresses.\n\nThis v0 endpoint is deprecated and frozen; use /api/v1/feeds/nameservers/moved/{date} instead.",
        "tags": [
          "feeds"
        ],
        "summary": "Get a list of moved nameservers.",
        "operationId": "feeds_nameservers_moved",
        "deprecated": true,
        "parameters": [
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "date query",
            "name": "date",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/nameserverFeedResponse"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/feeds/nameservers/new/date/{date}": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/feeds/nameservers/new/{date} instead.",
        "tags": [
          "feeds"
        ],
        "summary": "Get a list of newly added nameservers.",
        "operationId": "feeds_nameservers_new",
        "deprecated": true,
        "parameters": [
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "date query",
            "name": "date",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/nameserverFeedResponse"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/feeds/nameservers/old/date/{date}": {
      "get": {
        "description": "List of nameservers which no longer have root glue `A` or `AAAA` records.\n\nThis v0 endpoint is deprecated and frozen; use /api/v1/feeds/nameservers/old/{date} instead.",
        "tags": [
          "feeds"
        ],
        "summary": "Get a list of old nameservers.",
        "operationId": "feeds_nameservers_old",
        "deprecated": true,
        "parameters": [
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "date query",
            "name": "date",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/nameserverFeedResponse"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/ip/{ip}": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/ip/{ip} instead.",
        "tags": [
          "ip"
        ],
        "summary": "Find IP info.",
        "operationId": "ip_info",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "example": "192.0.2.0",
            "description": "the IP",
            "name": "ip",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/ipResponse"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/ip/{ip}/nameservers/archive": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/ip/{ip}/nameservers/archive instead.",
        "tags": [
          "ip"
        ],
        "summary": "Find nameservers that no longer use the IP.",
        "operationId": "ip_archive_nameservers",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "example": "192.0.2.0",
            "description": "the IP",
            "name": "ip",
            "in": "path",
            "required": true
          },
          {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "example": 30,
            "description": "limits number of results returned",
            "name": "limit",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "before date filter (inclusive)",
            "name": "before",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "after date filter (inclusive)",
            "name": "after",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/nameserverList"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/ip/{ip}/nameservers/current": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/ip/{ip}/nameservers/current instead.",
        "tags": [
          "ip"
        ],
        "summary": "Find nameservers using the IP.",
        "operationId": "ip_current_nameservers",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "example": "192.0.2.0",
            "description": "the IP",
            "name": "ip",
            "in": "path",
            "required": true
          },
          {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "example": 30,
            "description": "limits number of results returned",
            "name": "limit",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "before date filter (inclusive)",
            "name": "before",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "after date filter (inclusive)",
            "name": "after",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/nameserverList"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/nameservers/{nameserver}": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/nameservers/{nameserver} instead.",
        "tags": [
          "nameservers"
        ],
        "summary": "Find nameserver info.",
        "operationId": "nameserver_info",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "A.IANA-SERVERS.NET",
            "description": "nameserver",
            "name": "nameserver",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/nameserverResponse"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/nameservers/{nameserver}/domains/archive": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/nameservers/{nameserver}/domains/archive instead.",
        "tags": [
          "nameservers"
        ],
        "summary": "Find domains no longer using the nameserver.",
        "operationId": "nameserver_archive_domains",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "A.IANA-SERVERS.NET",
            "description": "nameserver",
            "name": "nameserver",
            "in": "path",
            "required": true
          },
          {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "example": 30,
            "description": "limits number of results returned",
            "name": "limit",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "before date filter (inclusive)",
            "name": "before",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "after date filter (inclusive)",
            "name": "after",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/domainsList"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/nameservers/{nameserver}/domains/current": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/nameservers/{nameserver}/domains/current instead.",
        "tags": [
          "nameservers"
        ],
        "summary": "Find domains currently using the nameserver.",
        "operationId": "nameserver_current_domains",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "A.IANA-SERVERS.NET",
            "description": "nameserver",
            "name": "nameserver",
            "in": "path",
            "required": true
          },
          {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "example": 30,
            "description": "limits number of results returned",
            "name": "limit",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "before date filter (inclusive)",
            "name": "before",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "after date filter (inclusive)",
            "name": "after",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/domainsList"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/nameservers/{nameserver}/ipv4/archive": {
      "get": {
        "description": "Lists IPs once included as `A` glue records.\n\nThis v0 endpoint is deprecated and frozen; use /api/v1/nameservers/{nameserver}/ipv4/archive instead.",
        "tags": [
          "nameservers"
        ],
        "summary": "Find IPv4 IPs no longer in use by the nameserver.",
        "operationId": "nameserver_archive_ipv4",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "A.IANA-SERVERS.NET",
            "description": "nameserver",
            "name": "nameserver",
            "in": "path",
            "required": true
          },
          {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "example": 30,
            "description": "limits number of results returned",
            "name": "limit",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "before date filter (inclusive)",
            "name": "before",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "after date filter (inclusive)",
            "name": "after",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/ipList"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/nameservers/{nameserver}/ipv4/current": {
      "get": {
        "description": "Lists IPs included as `A` glue records.\n\nThis v0 endpoint is deprecated and frozen; use /api/v1/nameservers/{nameserver}/ipv4/current instead.",
        "tags": [
          "nameservers"
        ],
        "summary": "Find the current IPv4 IPs for the nameserver.",
        "operationId": "nameserver_current_ipv4",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "A.IANA-SERVERS.NET",
            "description": "nameserver",
            "name": "nameserver",
            "in": "path",
            "required": true
          },
          {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "example": 30,
            "description": "limits number of results returned",
            "name": "limit",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "before date filter (inclusive)",
            "name": "before",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "after date filter (inclusive)",
            "name": "after",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/ipList"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/nameservers/{nameserver}/ipv6/archive": {
      "get": {
        "description": "Lists IPs once included as `AAAA` glue records.\n\nThis v0 endpoint is deprecated and frozen; use /api/v1/nameservers/{nameserver}/ipv6/archive instead.",
        "tags": [
          "nameservers"
        ],
        "summary": "Find IPv6 IPs no longer in use by the nameserver.",
        "operationId": "nameserver_archive_ipv6",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "A.IANA-SERVERS.NET",
            "description": "nameserver",
            "name": "nameserver",
            "in": "path",
            "required": true
          },
          {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "example": 30,
            "description": "limits number of results returned",
            "name": "limit",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "before date filter (inclusive)",
            "name": "before",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "after date filter (inclusive)",
            "name": "after",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/ipList"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/nameservers/{nameserver}/ipv6/current": {
      "get": {
        "description": "Lists IPs included as `AAAA` glue records.\n\nThis v0 endpoint is deprecated and frozen; use /api/v1/nameservers/{nameserver}/ipv6/current instead.",
        "tags": [
          "nameservers"
        ],
        "summary": "Find the current IPv6 IPs for the nameserver.",
        "operationId": "nameserver_current_ipv6",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "A.IANA-SERVERS.NET",
            "description": "nameserver",
            "name": "nameserver",
            "in": "path",
            "required": true
          },
          {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "example": 30,
            "description": "limits number of results returned",
            "name": "limit",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "before date filter (inclusive)",
            "name": "before",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "after date filter (inclusive)",
            "name": "after",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/ipList"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/random": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/random instead.",
        "tags": [
          "domains"
        ],
        "summary": "Find a random active domain.",
        "operationId": "random_domain",
        "deprecated": true,
        "responses": {
          "200": {
            "$ref": "#/responses/domainResponse"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/zones/{zone}": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/zones/{zone} instead.",
        "tags": [
          "zones"
        ],
        "summary": "Find info for the zone.",
        "operationId": "zone_info",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "COM",
            "description": "the zone",
            "name": "zone",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/zoneResponse"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/zones/{zone}/nameservers/archive": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/zones/{zone}/nameservers/archive instead.",
        "tags": [
          "zones"
        ],
        "summary": "Find archived nameservers for the zone.",
        "operationId": "zone_archive_nameservers",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "COM",
            "description": "the zone",
            "name": "zone",
            "in": "path",
            "required": true
          },
          {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "example": 30,
            "description": "limits number of results returned",
            "name": "limit",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "before date filter (inclusive)",
            "name": "before",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "after date filter (inclusive)",
            "name": "after",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/nameserverList"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/zones/{zone}/nameservers/current": {
      "get": {
        "description": "This v0 endpoint is deprecated and frozen; use /api/v1/zones/{zone}/nameservers/current instead.",
        "tags": [
          "zones"
        ],
        "summary": "Find the current nameservers for the zone.",
        "operationId": "zone_current_nameservers",
        "deprecated": true,
        "parameters": [
          {
            "type": "string",
            "format": "hostname",
            "example": "COM",
            "description": "the zone",
            "name": "zone",
            "in": "path",
            "required": true
          },
          {
            "maximum": 10000,
            "minimum": 1,
            "type": "integer",
            "format": "int64",
            "default": 1000,
            "example": 30,
            "description": "limits number of results returned",
            "name": "limit",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "before date filter (inclusive)",
            "name": "before",
            "in": "query"
          },
          {
            "pattern": "^\\d\\d\\d\\d-\\d\\d-\\d\\d$",
            "type": "string",
            "format": "date",
            "example": "2024-01-15",
            "description": "after date filter (inclusive)",
            "name": "after",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/responses/nameserverList"
          },
          "default": {
            "$ref": "#/responses/errResponse"
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    }
  },
  "definitions": {
    "Domain": {
      "description": "Domain domain object",
      "type": "object",
      "properties": {
        "first_seen": {
          "description": "date the domain was first observed",
          "type": "string",
          "format": "date-time"
        },
        "last_seen": {
          "description": "date the domain was last observed; null while the domain is still active",
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "description": "fully-qualified domain name, uppercased",
          "type": "string"
        },
        "parent_zone": {
          "$ref": "#/definitions/Zone"
        }
      }
    },
    "DomainInfo": {
      "description": "DomainInfo domain meta info",
      "type": "object",
      "properties": {
        "archive_nameserver_count": {
          "description": "number of nameservers that once served the domain but no longer do",
          "type": "integer",
          "format": "int64"
        },
        "first_seen": {
          "description": "date the domain was first observed",
          "type": "string",
          "format": "date-time"
        },
        "last_seen": {
          "description": "date the domain was last observed; null while the domain is still active",
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "description": "fully-qualified domain name, uppercased",
          "type": "string"
        },
        "nameserver_count": {
          "description": "number of nameservers currently serving the domain",
          "type": "integer",
          "format": "int64"
        },
        "parent_zone": {
          "$ref": "#/definitions/Zone"
        },
        "zone": {
          "description": "the name of the zone the domain is registered under",
          "type": "string"
        }
      }
    },
    "FeedDomain": {
      "description": "FeedDomain is a day's worth of domain changes of one kind (the Change type)\nin a feed: the date and the list of domain names.",
      "type": "object",
      "properties": {
        "change": {
          "description": "the kind of change this feed represents (e.g. new, moved, old)",
          "type": "string"
        },
        "date": {
          "description": "the date the changes were observed",
          "type": "string",
          "format": "date-time"
        },
        "domains": {
          "description": "the domain names that changed on this date",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "FeedNameServer": {
      "description": "FeedNameServer is a day's worth of nameserver changes of one kind (the\nChange type) in a feed: the date and the IPv4/IPv6 nameserver names.",
      "type": "object",
      "properties": {
        "change": {
          "description": "the kind of change this feed represents (e.g. new, moved, old)",
          "type": "string"
        },
        "date": {
          "description": "the date the changes were observed",
          "type": "string",
          "format": "date-time"
        },
        "nameservers_ip4": {
          "description": "nameservers with IPv4 glue that changed on this date",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "nameservers_ip6": {
          "description": "nameservers with IPv6 glue that changed on this date",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "IP": {
      "description": "IP holds information about an IP address",
      "type": "object",
      "properties": {
        "first_seen": {
          "description": "date the IP was first observed",
          "type": "string",
          "format": "date-time"
        },
        "last_seen": {
          "description": "date the IP was last observed; null while still active",
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "description": "IP address in canonical string form",
          "type": "string"
        },
        "parent_zone": {
          "$ref": "#/definitions/Zone"
        },
        "version": {
          "description": "IP version: 4 or 6",
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "IPInfo": {
      "description": "IPInfo holds more information about an IP address",
      "type": "object",
      "properties": {
        "archive_nameserver_count": {
          "description": "number of nameservers that once resolved to the IP but no longer do",
          "type": "integer",
          "format": "int64"
        },
        "first_seen": {
          "description": "date the IP was first observed",
          "type": "string",
          "format": "date-time"
        },
        "last_seen": {
          "description": "date the IP was last observed; null while still active",
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "description": "IP address in canonical string form",
          "type": "string"
        },
        "nameserver_count": {
          "description": "number of nameservers currently resolving to the IP",
          "type": "integer",
          "format": "int64"
        },
        "parent_zone": {
          "$ref": "#/definitions/Zone"
        },
        "version": {
          "description": "IP version: 4 or 6",
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "JSONError": {
      "description": "JSONError JSON-API error object",
      "type": "object",
      "properties": {
        "detail": {
          "description": "human-readable explanation of the error",
          "type": "string"
        },
        "status": {
          "description": "HTTP status code of the error",
          "type": "integer",
          "format": "int64"
        },
        "title": {
          "description": "short, human-readable summary of the error",
          "type": "string"
        }
      }
    },
    "NameServer": {
      "description": "NameServer nameserver object",
      "type": "object",
      "properties": {
        "first_seen": {
          "description": "date the nameserver was first observed",
          "type": "string",
          "format": "date-time"
        },
        "last_seen": {
          "description": "date the nameserver was last observed; null while still active",
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "description": "nameserver hostname, uppercased",
          "type": "string"
        },
        "parent_zone": {
          "$ref": "#/definitions/Zone"
        }
      }
    },
    "NameServerInfo": {
      "description": "NameServerInfo augments NameServer with its current and archived domain and\nIPv4/IPv6 address counts.",
      "type": "object",
      "properties": {
        "archive_domain_count": {
          "description": "number of domains that once used the nameserver but no longer do",
          "type": "integer",
          "format": "int64"
        },
        "archive_ipv4_count": {
          "description": "number of archived (no longer current) IPv4 glue addresses",
          "type": "integer",
          "format": "int64"
        },
        "archive_ipv6_count": {
          "description": "number of archived (no longer current) IPv6 glue addresses",
          "type": "integer",
          "format": "int64"
        },
        "domain_count": {
          "description": "number of domains currently using the nameserver",
          "type": "integer",
          "format": "int64"
        },
        "first_seen": {
          "description": "date the nameserver was first observed",
          "type": "string",
          "format": "date-time"
        },
        "ipv4_count": {
          "description": "number of current IPv4 glue addresses for the nameserver",
          "type": "integer",
          "format": "int64"
        },
        "ipv6_count": {
          "description": "number of current IPv6 glue addresses for the nameserver",
          "type": "integer",
          "format": "int64"
        },
        "last_seen": {
          "description": "date the nameserver was last observed; null while still active",
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "description": "nameserver hostname, uppercased",
          "type": "string"
        },
        "parent_zone": {
          "$ref": "#/definitions/Zone"
        }
      }
    },
    "RootZone": {
      "description": "RootZone adds root metadata to the zone types",
      "type": "object",
      "properties": {
        "first_import": {
          "description": "date the zone first appeared in a root-zone import",
          "type": "string",
          "format": "date-time"
        },
        "last_import": {
          "description": "date the zone last appeared in a root-zone import",
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "Zone": {
      "description": "Zone holds information about a zone",
      "type": "object",
      "properties": {
        "first_seen": {
          "description": "date the zone was first observed",
          "type": "string",
          "format": "date-time"
        },
        "last_seen": {
          "description": "date the zone was last observed; null while the zone is still active",
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "description": "zone name (the TLD), uppercased",
          "type": "string"
        }
      }
    },
    "ZoneImportResult": {
      "description": "ZoneImportResult holds data about the results of a single import",
      "type": "object",
      "properties": {
        "count": {
          "description": "total number of imports for the zone",
          "type": "integer",
          "format": "int64"
        },
        "domains": {
          "description": "number of domains in the most recent import",
          "type": "integer",
          "format": "int64"
        },
        "first_date": {
          "description": "date of the first import for the zone",
          "type": "string",
          "format": "date-time"
        },
        "last_date": {
          "description": "date of the most recent import for the zone",
          "type": "string",
          "format": "date-time"
        },
        "organization": {
          "description": "the organization IANA records as managing the zone. IANA writes \"Not\nassigned\" for delegated-but-unassigned zones; that is stored as-is.",
          "type": "string"
        },
        "records": {
          "description": "number of records in the most recent import",
          "type": "integer",
          "format": "int64"
        },
        "type": {
          "description": "IANA type: generic, country-code, sponsored, test, infrastructure or\ngeneric-restricted; public-suffix for a PSL entry that is not a TLD.",
          "type": "string"
        },
        "zone": {
          "description": "zone name, uppercased",
          "type": "string"
        }
      }
    },
    "ZoneInfo": {
      "description": "ZoneInfo augments Zone with its current and archived nameserver counts and\nits import and root-zone details (populated for the web).",
      "type": "object",
      "properties": {
        "archive_nameserver_count": {
          "description": "number of nameservers once observed in the zone but no longer present",
          "type": "integer",
          "format": "int64"
        },
        "first_seen": {
          "description": "date the zone was first observed",
          "type": "string",
          "format": "date-time"
        },
        "import_data": {
          "$ref": "#/definitions/ZoneImportResult"
        },
        "last_seen": {
          "description": "date the zone was last observed; null while the zone is still active",
          "type": "string",
          "format": "date-time"
        },
        "name": {
          "description": "zone name (the TLD), uppercased",
          "type": "string"
        },
        "nameserver_count": {
          "description": "number of nameservers currently observed in the zone",
          "type": "integer",
          "format": "int64"
        },
        "organization": {
          "description": "the organization IANA records as managing the zone. IANA writes \"Not\nassigned\" for delegated-but-unassigned zones; that is stored as-is.",
          "type": "string"
        },
        "root": {
          "$ref": "#/definitions/RootZone"
        },
        "type": {
          "description": "IANA type: generic, country-code, sponsored, test, infrastructure or\ngeneric-restricted; public-suffix for a PSL entry that is not a TLD.",
          "type": "string"
        }
      }
    }
  },
  "responses": {
    "authSuccess": {
      "description": "authSuccess response",
      "headers": {
        "Retry-After": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before the caller should retry. Only set after the rate limit is reached."
        },
        "X-RateLimit-Limit": {
          "type": "integer",
          "format": "int64",
          "description": "Request quota."
        },
        "X-RateLimit-Remaining": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests remaining in the current window."
        },
        "X-RateLimit-Reset": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before a new window."
        }
      }
    },
    "domainFeedResponse": {
      "description": "list of domains",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/FeedDomain"
          }
        }
      },
      "headers": {
        "Retry-After": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before the caller should retry. Only set after the rate limit is reached."
        },
        "X-RateLimit-Limit": {
          "type": "integer",
          "format": "int64",
          "description": "Request quota."
        },
        "X-RateLimit-Remaining": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests remaining in the current window."
        },
        "X-RateLimit-Reset": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before a new window."
        }
      }
    },
    "domainResponse": {
      "description": "single domain information",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/DomainInfo"
          }
        }
      },
      "headers": {
        "Retry-After": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before the caller should retry. Only set after the rate limit is reached."
        },
        "X-RateLimit-Limit": {
          "type": "integer",
          "format": "int64",
          "description": "Request quota."
        },
        "X-RateLimit-Remaining": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests remaining in the current window."
        },
        "X-RateLimit-Reset": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before a new window."
        }
      }
    },
    "domainsList": {
      "description": "list of domains",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/Domain"
            }
          }
        }
      },
      "headers": {
        "Retry-After": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before the caller should retry. Only set after the rate limit is reached."
        },
        "X-RateLimit-Limit": {
          "type": "integer",
          "format": "int64",
          "description": "Request quota."
        },
        "X-RateLimit-Remaining": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests remaining in the current window."
        },
        "X-RateLimit-Reset": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before a new window."
        }
      }
    },
    "errResponse": {
      "description": "error response",
      "schema": {
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/definitions/JSONError"
          }
        }
      }
    },
    "ipList": {
      "description": "list of IPs",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/IP"
            }
          }
        }
      },
      "headers": {
        "Retry-After": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before the caller should retry. Only set after the rate limit is reached."
        },
        "X-RateLimit-Limit": {
          "type": "integer",
          "format": "int64",
          "description": "Request quota."
        },
        "X-RateLimit-Remaining": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests remaining in the current window."
        },
        "X-RateLimit-Reset": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before a new window."
        }
      }
    },
    "ipResponse": {
      "description": "single IP information",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/IPInfo"
          }
        }
      },
      "headers": {
        "Retry-After": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before the caller should retry. Only set after the rate limit is reached."
        },
        "X-RateLimit-Limit": {
          "type": "integer",
          "format": "int64",
          "description": "Request quota."
        },
        "X-RateLimit-Remaining": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests remaining in the current window."
        },
        "X-RateLimit-Reset": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before a new window."
        }
      }
    },
    "nameserverFeedResponse": {
      "description": "list of nameservers",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/FeedNameServer"
          }
        }
      },
      "headers": {
        "Retry-After": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before the caller should retry. Only set after the rate limit is reached."
        },
        "X-RateLimit-Limit": {
          "type": "integer",
          "format": "int64",
          "description": "Request quota."
        },
        "X-RateLimit-Remaining": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests remaining in the current window."
        },
        "X-RateLimit-Reset": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before a new window."
        }
      }
    },
    "nameserverList": {
      "description": "list of nameservers",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/NameServer"
            }
          }
        }
      },
      "headers": {
        "Retry-After": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before the caller should retry. Only set after the rate limit is reached."
        },
        "X-RateLimit-Limit": {
          "type": "integer",
          "format": "int64",
          "description": "Request quota."
        },
        "X-RateLimit-Remaining": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests remaining in the current window."
        },
        "X-RateLimit-Reset": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before a new window."
        }
      }
    },
    "nameserverResponse": {
      "description": "nameserver information",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/NameServerInfo"
          }
        }
      },
      "headers": {
        "Retry-After": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before the caller should retry. Only set after the rate limit is reached."
        },
        "X-RateLimit-Limit": {
          "type": "integer",
          "format": "int64",
          "description": "Request quota."
        },
        "X-RateLimit-Remaining": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests remaining in the current window."
        },
        "X-RateLimit-Reset": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before a new window."
        }
      }
    },
    "zoneResponse": {
      "description": "single zone information",
      "schema": {
        "type": "object",
        "properties": {
          "data": {
            "$ref": "#/definitions/ZoneInfo"
          }
        }
      },
      "headers": {
        "Retry-After": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before the caller should retry. Only set after the rate limit is reached."
        },
        "X-RateLimit-Limit": {
          "type": "integer",
          "format": "int64",
          "description": "Request quota."
        },
        "X-RateLimit-Remaining": {
          "type": "integer",
          "format": "int64",
          "description": "Number of requests remaining in the current window."
        },
        "X-RateLimit-Reset": {
          "type": "integer",
          "format": "int64",
          "description": "Number of seconds before a new window."
        }
      }
    }
  },
  "securityDefinitions": {
    "api_key": {
      "type": "apiKey",
      "name": "X-API-Key",
      "in": "header"
    }
  },
  "security": [
    {
      "api_key": []
    }
  ]
}