{
  "openapi": "3.0.0",
  "info": {
    "title": "DNS.Tools API",
    "version": "1.0.0",
    "description": "\nComprehensive set of DNS, DOMAIN, WHOIS, RDAP, and website analysis APIs. Get started with our easy-to-use REST endpoints and detailed documentation.\n\nFor an API reference and quick start, see [https://dns.tools/docs](https://dns.tools/docs)\n      "
  },
  "servers": [
    {
      "url": "https://api.dns.tools",
      "description": "Production"
    },
    {
      "url": "http://localhost:3000",
      "description": "Development"
    }
  ],
  "components": {
    "schemas": {
      "BaseApiResponse": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string",
            "enum": [
              "dns",
              "domain"
            ],
            "description": "Tool that generated this result",
            "examples": [
              "dns",
              "domain"
            ]
          },
          "query": {
            "type": "string",
            "description": "The original query string",
            "example": "google.com"
          },
          "requestId": {
            "type": "string",
            "nullable": true,
            "description": "Unique request identifier that generated this result",
            "example": "d9a4b7c2-3f6e-4a8d-9b5c-7e2f4a9b6c3d"
          },
          "timestamp": {
            "type": "string",
            "description": "UTC timestamp when the result was generated",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "elapsed": {
            "type": "number",
            "nullable": true,
            "description": "Time taken to generate the result in milliseconds",
            "example": 245
          },
          "cached": {
            "type": "boolean",
            "description": "Whether this result was served from cache",
            "example": false
          },
          "errorCode": {
            "type": "number",
            "nullable": true,
            "description": "Error code if the request failed",
            "example": 404
          },
          "errorName": {
            "type": "string",
            "nullable": true,
            "description": "Error name if the request failed",
            "example": "Domain Not Found"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true,
            "description": "Human-readable error message if the request failed",
            "example": "The requested domain does not exist."
          },
          "results": {
            "type": "array",
            "nullable": true,
            "items": {
              "nullable": true
            },
            "description": "Tool-specific results data"
          }
        },
        "required": [
          "tool",
          "query",
          "requestId",
          "timestamp",
          "elapsed",
          "cached",
          "errorCode",
          "errorName",
          "errorMessage",
          "results"
        ]
      },
      "ApiErrorResponse": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string",
            "enum": [
              "dns",
              "domain"
            ],
            "description": "Tool that generated this result",
            "examples": [
              "dns",
              "domain"
            ]
          },
          "query": {
            "type": "string",
            "description": "The original query string",
            "example": "google.com"
          },
          "requestId": {
            "type": "string",
            "nullable": true,
            "description": "Unique request identifier that generated this result",
            "example": "d9a4b7c2-3f6e-4a8d-9b5c-7e2f4a9b6c3d"
          },
          "timestamp": {
            "type": "string",
            "description": "UTC timestamp when the result was generated",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "elapsed": {
            "type": "number",
            "nullable": true,
            "description": "Time taken to generate the result in milliseconds",
            "example": 245
          },
          "cached": {
            "type": "boolean",
            "description": "Whether this result was served from cache",
            "example": false
          },
          "errorCode": {
            "type": "number",
            "description": "Error code if the request failed",
            "example": 404
          },
          "errorName": {
            "type": "string",
            "description": "Error name if the request failed",
            "example": "Domain Not Found"
          },
          "errorMessage": {
            "type": "string",
            "description": "Human-readable error message if the request failed",
            "example": "The requested domain does not exist."
          },
          "results": {
            "type": "array",
            "nullable": true,
            "items": {
              "nullable": true
            },
            "description": "Tool-specific results data"
          }
        },
        "required": [
          "tool",
          "query",
          "requestId",
          "timestamp",
          "elapsed",
          "cached",
          "errorCode",
          "errorName",
          "errorMessage",
          "results"
        ]
      },
      "DnsApiResponse": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string",
            "enum": [
              "dns",
              "domain"
            ],
            "description": "Tool that generated this result",
            "examples": [
              "dns",
              "domain"
            ]
          },
          "query": {
            "type": "string",
            "description": "The original FQDN/qname that was queried",
            "example": "example.com"
          },
          "requestId": {
            "type": "string",
            "nullable": true,
            "description": "Unique request identifier that generated this result",
            "example": "d9a4b7c2-3f6e-4a8d-9b5c-7e2f4a9b6c3d"
          },
          "timestamp": {
            "type": "string",
            "description": "UTC timestamp when the result was generated",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "elapsed": {
            "type": "number",
            "nullable": true,
            "description": "Time taken to generate the result in milliseconds",
            "example": 245
          },
          "cached": {
            "type": "boolean",
            "description": "Whether this result was served from cache",
            "example": false
          },
          "errorCode": {
            "type": "number",
            "nullable": true,
            "description": "Error code if the request failed",
            "example": 404
          },
          "errorName": {
            "type": "string",
            "nullable": true,
            "description": "Error name if the request failed",
            "example": "Domain Not Found"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true,
            "description": "Human-readable error message if the request failed",
            "example": "The requested domain does not exist."
          },
          "results": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "SOA",
                    "NS",
                    "A",
                    "AAAA",
                    "CNAME",
                    "DNAME",
                    "MX",
                    "TXT",
                    "CAA",
                    "TLSA",
                    "DS",
                    "DNSKEY",
                    "RRSIG",
                    "NSEC",
                    "NSEC3",
                    "NSEC3PARAM",
                    "CDS",
                    "CDNSKEY",
                    "KEY",
                    "SIG",
                    "SRV",
                    "HTTPS",
                    "SVCB",
                    "CERT",
                    "HINFO",
                    "TSIG",
                    "OPENPGPKEY",
                    "RP",
                    "SSHFP",
                    "URI",
                    "NAPTR",
                    "LOC",
                    "PTR"
                  ],
                  "description": "DNS record type",
                  "examples": [
                    "SOA",
                    "NS",
                    "A",
                    "AAAA",
                    "CNAME",
                    "DNAME",
                    "MX",
                    "TXT",
                    "CAA",
                    "TLSA",
                    "DS",
                    "DNSKEY",
                    "RRSIG",
                    "NSEC",
                    "NSEC3",
                    "NSEC3PARAM",
                    "CDS",
                    "CDNSKEY",
                    "KEY",
                    "SIG",
                    "SRV",
                    "HTTPS",
                    "SVCB",
                    "CERT",
                    "HINFO",
                    "TSIG",
                    "OPENPGPKEY",
                    "RP",
                    "SSHFP",
                    "URI",
                    "NAPTR",
                    "LOC",
                    "PTR"
                  ]
                },
                "name": {
                  "type": "string",
                  "description": "The domain name for this record",
                  "example": "example.com"
                },
                "ttl": {
                  "type": "number",
                  "description": "Time to live in seconds",
                  "example": 300
                }
              },
              "required": [
                "type",
                "name",
                "ttl"
              ],
              "additionalProperties": {
                "nullable": true
              },
              "description": "DNS record with type-specific fields extending BaseDnsRecord",
              "example": {
                "name": "example.com",
                "type": "A",
                "ttl": 300,
                "address": "192.0.2.1"
              }
            },
            "description": "Array of DNS record objects",
            "example": []
          },
          "queryType": {
            "type": "string",
            "enum": [
              "ALL",
              "REVERSE",
              "SPF",
              "SOA",
              "NS",
              "A",
              "AAAA",
              "CNAME",
              "DNAME",
              "MX",
              "TXT",
              "CAA",
              "TLSA",
              "DS",
              "DNSKEY",
              "RRSIG",
              "NSEC",
              "NSEC3",
              "NSEC3PARAM",
              "CDS",
              "CDNSKEY",
              "KEY",
              "SIG",
              "SRV",
              "HTTPS",
              "SVCB",
              "CERT",
              "HINFO",
              "TSIG",
              "OPENPGPKEY",
              "RP",
              "SSHFP",
              "URI",
              "NAPTR",
              "LOC",
              "PTR"
            ],
            "description": "The original query type",
            "examples": [
              "ALL",
              "REVERSE",
              "SPF",
              "SOA",
              "NS",
              "A",
              "AAAA",
              "CNAME",
              "DNAME",
              "MX",
              "TXT",
              "CAA",
              "TLSA",
              "DS",
              "DNSKEY",
              "RRSIG",
              "NSEC",
              "NSEC3",
              "NSEC3PARAM",
              "CDS",
              "CDNSKEY",
              "KEY",
              "SIG",
              "SRV",
              "HTTPS",
              "SVCB",
              "CERT",
              "HINFO",
              "TSIG",
              "OPENPGPKEY",
              "RP",
              "SSHFP",
              "URI",
              "NAPTR",
              "LOC",
              "PTR"
            ]
          },
          "server": {
            "type": "string",
            "description": "The server that provided the answers",
            "example": "1.1.1.1"
          },
          "serverHost": {
            "type": "string",
            "description": "The hostname of the server that provided the answers",
            "example": "one.one.one.one"
          },
          "serverType": {
            "type": "string",
            "enum": [
              "custom",
              "authoritative",
              "public",
              "privacy",
              "safety",
              "isp",
              "root",
              "reverse"
            ],
            "description": "The requested server type",
            "examples": [
              "custom",
              "authoritative",
              "public",
              "privacy",
              "safety",
              "isp",
              "root",
              "reverse"
            ]
          },
          "transport": {
            "type": "string",
            "enum": [
              "udp",
              "tcp"
            ],
            "description": "The transport protocol used",
            "examples": [
              "udp",
              "tcp"
            ]
          },
          "recursive": {
            "type": "boolean",
            "description": "Whether recursive resolution was requested",
            "example": true
          },
          "dnssec": {
            "type": "boolean",
            "description": "Whether DNSSEC was requested",
            "example": true
          }
        },
        "required": [
          "tool",
          "query",
          "requestId",
          "timestamp",
          "elapsed",
          "cached",
          "errorCode",
          "errorName",
          "errorMessage",
          "results",
          "queryType",
          "server",
          "serverType",
          "transport",
          "recursive",
          "dnssec"
        ]
      },
      "DomainApiResponse": {
        "type": "object",
        "properties": {
          "tool": {
            "type": "string",
            "enum": [
              "dns",
              "domain"
            ],
            "description": "Tool that generated this result",
            "examples": [
              "dns",
              "domain"
            ]
          },
          "query": {
            "type": "string",
            "description": "The original query string",
            "example": "google.com"
          },
          "requestId": {
            "type": "string",
            "nullable": true,
            "description": "Unique request identifier that generated this result",
            "example": "d9a4b7c2-3f6e-4a8d-9b5c-7e2f4a9b6c3d"
          },
          "timestamp": {
            "type": "string",
            "description": "UTC timestamp when the result was generated",
            "example": "2025-01-15T10:30:00.000Z"
          },
          "elapsed": {
            "type": "number",
            "nullable": true,
            "description": "Time taken to generate the result in milliseconds",
            "example": 245
          },
          "cached": {
            "type": "boolean",
            "description": "Whether this result was served from cache",
            "example": false
          },
          "errorCode": {
            "type": "number",
            "nullable": true,
            "description": "Error code if the request failed",
            "example": 404
          },
          "errorName": {
            "type": "string",
            "nullable": true,
            "description": "Error name if the request failed",
            "example": "Domain Not Found"
          },
          "errorMessage": {
            "type": "string",
            "nullable": true,
            "description": "Human-readable error message if the request failed",
            "example": "The requested domain does not exist."
          },
          "results": {
            "type": "array",
            "nullable": true,
            "items": {
              "type": "object",
              "properties": {
                "errorCode": {
                  "type": "number",
                  "description": "Error code if the request failed",
                  "example": 404
                },
                "errorName": {
                  "type": "string",
                  "description": "Error name if the request failed",
                  "example": "Domain Not Found"
                },
                "errorMessage": {
                  "type": "string",
                  "description": "Human-readable error message if the request failed",
                  "example": "The requested domain does not exist."
                },
                "domain_name": {
                  "type": "string",
                  "description": "Domain name in punycode/ASCII format",
                  "example": "google.com"
                },
                "domain_name_unicode": {
                  "type": "string",
                  "nullable": true,
                  "description": "IDN domain in unicode if applicable, null otherwise",
                  "example": "xn--google-z7a.com"
                },
                "creation_date": {
                  "type": "string",
                  "nullable": true,
                  "description": "Domain creation date in ISO format",
                  "example": "1997-09-15T04:00:00Z"
                },
                "expiration_date": {
                  "type": "string",
                  "nullable": true,
                  "description": "Domain expiration date in ISO format",
                  "example": "2028-09-14T04:00:00Z"
                },
                "updated_date": {
                  "type": "string",
                  "nullable": true,
                  "description": "Domain last updated date in ISO format",
                  "example": "2019-09-09T15:39:04Z"
                },
                "nameservers": {
                  "type": "array",
                  "nullable": true,
                  "items": {
                    "type": "string"
                  },
                  "description": "List of authoritative nameservers for the domain",
                  "example": [
                    "ns1.google.com",
                    "ns2.google.com",
                    "ns3.google.com",
                    "ns4.google.com"
                  ]
                },
                "dnssec": {
                  "type": "boolean",
                  "nullable": true,
                  "description": "Whether DNSSEC is enabled for the domain",
                  "example": false
                },
                "status": {
                  "type": "array",
                  "nullable": true,
                  "items": {
                    "type": "string",
                    "enum": [
                      "ok",
                      "addPeriod",
                      "linked",
                      "autoRenewPeriod",
                      "clientHold",
                      "clientDeleteProhibited",
                      "clientRenewProhibited",
                      "clientTransferProhibited",
                      "clientUpdateProhibited",
                      "inactive",
                      "pendingCreate",
                      "pendingDelete",
                      "pendingRenew",
                      "pendingRestore",
                      "pendingTransfer",
                      "pendingUpdate",
                      "redemptionPeriod",
                      "renewPeriod",
                      "serverDeleteProhibited",
                      "serverHold",
                      "serverRenewProhibited",
                      "serverTransferProhibited",
                      "serverUpdateProhibited",
                      "transferPeriod"
                    ]
                  },
                  "description": "EPP status codes for the domain",
                  "examples": [
                    [
                      "ok",
                      "addPeriod",
                      "linked",
                      "autoRenewPeriod",
                      "clientHold",
                      "clientDeleteProhibited",
                      "clientRenewProhibited",
                      "clientTransferProhibited",
                      "clientUpdateProhibited",
                      "inactive",
                      "pendingCreate",
                      "pendingDelete",
                      "pendingRenew",
                      "pendingRestore",
                      "pendingTransfer",
                      "pendingUpdate",
                      "redemptionPeriod",
                      "renewPeriod",
                      "serverDeleteProhibited",
                      "serverHold",
                      "serverRenewProhibited",
                      "serverTransferProhibited",
                      "serverUpdateProhibited",
                      "transferPeriod"
                    ]
                  ]
                },
                "registrar": {
                  "type": "object",
                  "nullable": true,
                  "properties": {
                    "iana_id": {
                      "type": "number",
                      "nullable": true,
                      "description": "IANA registrar ID",
                      "example": 146
                    },
                    "name": {
                      "type": "string",
                      "nullable": true,
                      "description": "Registrar name",
                      "example": "GoDaddy.com, LLC"
                    },
                    "address": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "type": "string"
                      },
                      "description": "Registrar address lines",
                      "example": [
                        "2155 E GoDaddy Way",
                        "Tempe, AZ 85284"
                      ]
                    },
                    "city": {
                      "type": "string",
                      "nullable": true,
                      "description": "Registrar city",
                      "example": "Tempe"
                    },
                    "state": {
                      "type": "string",
                      "nullable": true,
                      "description": "Registrar state",
                      "example": "AZ"
                    },
                    "postal_code": {
                      "type": "string",
                      "nullable": true,
                      "description": "Registrar postal code",
                      "example": "85284"
                    },
                    "country_code": {
                      "type": "string",
                      "nullable": true,
                      "description": "Registrar country code",
                      "examples": [
                        [
                          "AF",
                          "AL",
                          "DZ",
                          "AS",
                          "AD",
                          "AO",
                          "AI",
                          "AQ",
                          "AG",
                          "AR",
                          "AM",
                          "AW",
                          "AU",
                          "AT",
                          "AZ",
                          "BS",
                          "BH",
                          "BD",
                          "BB",
                          "BY",
                          "BE",
                          "BZ",
                          "BJ",
                          "BM",
                          "BT",
                          "BO",
                          "BA",
                          "BW",
                          "BV",
                          "BR",
                          "IO",
                          "BN",
                          "BG",
                          "BF",
                          "BI",
                          "KH",
                          "CM",
                          "CA",
                          "CV",
                          "KY",
                          "CF",
                          "TD",
                          "CL",
                          "CN",
                          "CX",
                          "CC",
                          "CO",
                          "KM",
                          "CG",
                          "CD",
                          "CK",
                          "CR",
                          "CI",
                          "HR",
                          "CU",
                          "CY",
                          "CZ",
                          "DK",
                          "DJ",
                          "DM",
                          "DO",
                          "EC",
                          "EG",
                          "SV",
                          "GQ",
                          "ER",
                          "EE",
                          "ET",
                          "FK",
                          "FO",
                          "FJ",
                          "FI",
                          "FR",
                          "GF",
                          "PF",
                          "TF",
                          "GA",
                          "GM",
                          "GE",
                          "DE",
                          "GH",
                          "GI",
                          "GR",
                          "GL",
                          "GD",
                          "GP",
                          "GU",
                          "GT",
                          "GN",
                          "GW",
                          "GY",
                          "HT",
                          "HM",
                          "VA",
                          "HN",
                          "HK",
                          "HU",
                          "IS",
                          "IN",
                          "ID",
                          "IR",
                          "IQ",
                          "IE",
                          "IL",
                          "IT",
                          "JM",
                          "JP",
                          "JO",
                          "KZ",
                          "KE",
                          "KI",
                          "KP",
                          "KR",
                          "KW",
                          "KG",
                          "LA",
                          "LV",
                          "LB",
                          "LS",
                          "LR",
                          "LY",
                          "LI",
                          "LT",
                          "LU",
                          "MO",
                          "MG",
                          "MW",
                          "MY",
                          "MV",
                          "ML",
                          "MT",
                          "MH",
                          "MQ",
                          "MR",
                          "MU",
                          "YT",
                          "MX",
                          "FM",
                          "MD",
                          "MC",
                          "MN",
                          "MS",
                          "MA",
                          "MZ",
                          "MM",
                          "NA",
                          "NR",
                          "NP",
                          "NL",
                          "NC",
                          "NZ",
                          "NI",
                          "NE",
                          "NG",
                          "NU",
                          "NF",
                          "MK",
                          "MP",
                          "NO",
                          "OM",
                          "PK",
                          "PW",
                          "PS",
                          "PA",
                          "PG",
                          "PY",
                          "PE",
                          "PH",
                          "PN",
                          "PL",
                          "PT",
                          "PR",
                          "QA",
                          "RE",
                          "RO",
                          "RU",
                          "RW",
                          "SH",
                          "KN",
                          "LC",
                          "PM",
                          "VC",
                          "WS",
                          "SM",
                          "ST",
                          "SA",
                          "SN",
                          "SC",
                          "SL",
                          "SG",
                          "SK",
                          "SI",
                          "SB",
                          "SO",
                          "ZA",
                          "GS",
                          "ES",
                          "LK",
                          "SD",
                          "SR",
                          "SJ",
                          "SZ",
                          "SE",
                          "CH",
                          "SY",
                          "TW",
                          "TJ",
                          "TZ",
                          "TH",
                          "TL",
                          "TG",
                          "TK",
                          "TO",
                          "TT",
                          "TN",
                          "TR",
                          "TM",
                          "TC",
                          "TV",
                          "UG",
                          "UA",
                          "AE",
                          "GB",
                          "US",
                          "UM",
                          "UY",
                          "UZ",
                          "VU",
                          "VE",
                          "VN",
                          "VG",
                          "VI",
                          "WF",
                          "EH",
                          "YE",
                          "ZM",
                          "ZW",
                          "AX",
                          "BQ",
                          "CW",
                          "GG",
                          "IM",
                          "JE",
                          "ME",
                          "BL",
                          "MF",
                          "RS",
                          "SX",
                          "SS",
                          "XK"
                        ]
                      ]
                    },
                    "phone": {
                      "type": "string",
                      "nullable": true,
                      "description": "Registrar phone number",
                      "example": "+1.4805058800"
                    },
                    "fax": {
                      "type": "string",
                      "nullable": true,
                      "description": "Registrar fax number",
                      "example": "+1.4805058844"
                    },
                    "email": {
                      "type": "string",
                      "nullable": true,
                      "description": "Registrar email",
                      "example": "compliance@godaddy.com"
                    },
                    "url": {
                      "type": "string",
                      "nullable": true,
                      "description": "Registrar website",
                      "example": "https://www.godaddy.com"
                    },
                    "abuse_email": {
                      "type": "string",
                      "nullable": true,
                      "description": "Abuse contact email",
                      "example": "abuse@godaddy.com"
                    },
                    "abuse_phone": {
                      "type": "string",
                      "nullable": true,
                      "description": "Abuse contact phone",
                      "example": "+1.4805058800"
                    }
                  },
                  "required": [
                    "iana_id",
                    "name",
                    "address",
                    "city",
                    "state",
                    "postal_code",
                    "country_code",
                    "phone",
                    "fax",
                    "email",
                    "url",
                    "abuse_email",
                    "abuse_phone"
                  ],
                  "description": "Domain registrar information"
                },
                "registrant": {
                  "type": "object",
                  "nullable": true,
                  "properties": {
                    "id": {
                      "type": "string",
                      "nullable": true,
                      "description": "Contact identifier",
                      "example": "CONTACT-123"
                    },
                    "name": {
                      "type": "string",
                      "nullable": true,
                      "description": "Contact name",
                      "example": "John Doe"
                    },
                    "org": {
                      "type": "string",
                      "nullable": true,
                      "description": "Organization name",
                      "example": "Example Corp"
                    },
                    "address": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "type": "string"
                      },
                      "description": "Street address lines",
                      "example": [
                        "123 Main St",
                        "Suite 100"
                      ]
                    },
                    "city": {
                      "type": "string",
                      "nullable": true,
                      "description": "City",
                      "example": "San Francisco"
                    },
                    "state": {
                      "type": "string",
                      "nullable": true,
                      "description": "State or province",
                      "example": "CA"
                    },
                    "postal_code": {
                      "type": "string",
                      "nullable": true,
                      "description": "Postal code",
                      "example": "94105"
                    },
                    "country_code": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO country code",
                      "examples": [
                        [
                          "AF",
                          "AL",
                          "DZ",
                          "AS",
                          "AD",
                          "AO",
                          "AI",
                          "AQ",
                          "AG",
                          "AR",
                          "AM",
                          "AW",
                          "AU",
                          "AT",
                          "AZ",
                          "BS",
                          "BH",
                          "BD",
                          "BB",
                          "BY",
                          "BE",
                          "BZ",
                          "BJ",
                          "BM",
                          "BT",
                          "BO",
                          "BA",
                          "BW",
                          "BV",
                          "BR",
                          "IO",
                          "BN",
                          "BG",
                          "BF",
                          "BI",
                          "KH",
                          "CM",
                          "CA",
                          "CV",
                          "KY",
                          "CF",
                          "TD",
                          "CL",
                          "CN",
                          "CX",
                          "CC",
                          "CO",
                          "KM",
                          "CG",
                          "CD",
                          "CK",
                          "CR",
                          "CI",
                          "HR",
                          "CU",
                          "CY",
                          "CZ",
                          "DK",
                          "DJ",
                          "DM",
                          "DO",
                          "EC",
                          "EG",
                          "SV",
                          "GQ",
                          "ER",
                          "EE",
                          "ET",
                          "FK",
                          "FO",
                          "FJ",
                          "FI",
                          "FR",
                          "GF",
                          "PF",
                          "TF",
                          "GA",
                          "GM",
                          "GE",
                          "DE",
                          "GH",
                          "GI",
                          "GR",
                          "GL",
                          "GD",
                          "GP",
                          "GU",
                          "GT",
                          "GN",
                          "GW",
                          "GY",
                          "HT",
                          "HM",
                          "VA",
                          "HN",
                          "HK",
                          "HU",
                          "IS",
                          "IN",
                          "ID",
                          "IR",
                          "IQ",
                          "IE",
                          "IL",
                          "IT",
                          "JM",
                          "JP",
                          "JO",
                          "KZ",
                          "KE",
                          "KI",
                          "KP",
                          "KR",
                          "KW",
                          "KG",
                          "LA",
                          "LV",
                          "LB",
                          "LS",
                          "LR",
                          "LY",
                          "LI",
                          "LT",
                          "LU",
                          "MO",
                          "MG",
                          "MW",
                          "MY",
                          "MV",
                          "ML",
                          "MT",
                          "MH",
                          "MQ",
                          "MR",
                          "MU",
                          "YT",
                          "MX",
                          "FM",
                          "MD",
                          "MC",
                          "MN",
                          "MS",
                          "MA",
                          "MZ",
                          "MM",
                          "NA",
                          "NR",
                          "NP",
                          "NL",
                          "NC",
                          "NZ",
                          "NI",
                          "NE",
                          "NG",
                          "NU",
                          "NF",
                          "MK",
                          "MP",
                          "NO",
                          "OM",
                          "PK",
                          "PW",
                          "PS",
                          "PA",
                          "PG",
                          "PY",
                          "PE",
                          "PH",
                          "PN",
                          "PL",
                          "PT",
                          "PR",
                          "QA",
                          "RE",
                          "RO",
                          "RU",
                          "RW",
                          "SH",
                          "KN",
                          "LC",
                          "PM",
                          "VC",
                          "WS",
                          "SM",
                          "ST",
                          "SA",
                          "SN",
                          "SC",
                          "SL",
                          "SG",
                          "SK",
                          "SI",
                          "SB",
                          "SO",
                          "ZA",
                          "GS",
                          "ES",
                          "LK",
                          "SD",
                          "SR",
                          "SJ",
                          "SZ",
                          "SE",
                          "CH",
                          "SY",
                          "TW",
                          "TJ",
                          "TZ",
                          "TH",
                          "TL",
                          "TG",
                          "TK",
                          "TO",
                          "TT",
                          "TN",
                          "TR",
                          "TM",
                          "TC",
                          "TV",
                          "UG",
                          "UA",
                          "AE",
                          "GB",
                          "US",
                          "UM",
                          "UY",
                          "UZ",
                          "VU",
                          "VE",
                          "VN",
                          "VG",
                          "VI",
                          "WF",
                          "EH",
                          "YE",
                          "ZM",
                          "ZW",
                          "AX",
                          "BQ",
                          "CW",
                          "GG",
                          "IM",
                          "JE",
                          "ME",
                          "BL",
                          "MF",
                          "RS",
                          "SX",
                          "SS",
                          "XK"
                        ]
                      ]
                    },
                    "phone": {
                      "type": "string",
                      "nullable": true,
                      "description": "Phone number",
                      "example": "+1.4155551234"
                    },
                    "fax": {
                      "type": "string",
                      "nullable": true,
                      "description": "Fax number",
                      "example": "+1.4155551235"
                    },
                    "email": {
                      "type": "string",
                      "nullable": true,
                      "description": "Email address",
                      "example": "john@example.com"
                    },
                    "url": {
                      "type": "string",
                      "nullable": true,
                      "description": "Website URL",
                      "example": "https://example.com"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "org",
                    "address",
                    "city",
                    "state",
                    "postal_code",
                    "country_code",
                    "phone",
                    "fax",
                    "email",
                    "url"
                  ],
                  "description": "Domain registrant (owner) contact information"
                },
                "admin": {
                  "type": "object",
                  "nullable": true,
                  "properties": {
                    "id": {
                      "type": "string",
                      "nullable": true,
                      "description": "Contact identifier",
                      "example": "CONTACT-123"
                    },
                    "name": {
                      "type": "string",
                      "nullable": true,
                      "description": "Contact name",
                      "example": "John Doe"
                    },
                    "org": {
                      "type": "string",
                      "nullable": true,
                      "description": "Organization name",
                      "example": "Example Corp"
                    },
                    "address": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "type": "string"
                      },
                      "description": "Street address lines",
                      "example": [
                        "123 Main St",
                        "Suite 100"
                      ]
                    },
                    "city": {
                      "type": "string",
                      "nullable": true,
                      "description": "City",
                      "example": "San Francisco"
                    },
                    "state": {
                      "type": "string",
                      "nullable": true,
                      "description": "State or province",
                      "example": "CA"
                    },
                    "postal_code": {
                      "type": "string",
                      "nullable": true,
                      "description": "Postal code",
                      "example": "94105"
                    },
                    "country_code": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO country code",
                      "examples": [
                        [
                          "AF",
                          "AL",
                          "DZ",
                          "AS",
                          "AD",
                          "AO",
                          "AI",
                          "AQ",
                          "AG",
                          "AR",
                          "AM",
                          "AW",
                          "AU",
                          "AT",
                          "AZ",
                          "BS",
                          "BH",
                          "BD",
                          "BB",
                          "BY",
                          "BE",
                          "BZ",
                          "BJ",
                          "BM",
                          "BT",
                          "BO",
                          "BA",
                          "BW",
                          "BV",
                          "BR",
                          "IO",
                          "BN",
                          "BG",
                          "BF",
                          "BI",
                          "KH",
                          "CM",
                          "CA",
                          "CV",
                          "KY",
                          "CF",
                          "TD",
                          "CL",
                          "CN",
                          "CX",
                          "CC",
                          "CO",
                          "KM",
                          "CG",
                          "CD",
                          "CK",
                          "CR",
                          "CI",
                          "HR",
                          "CU",
                          "CY",
                          "CZ",
                          "DK",
                          "DJ",
                          "DM",
                          "DO",
                          "EC",
                          "EG",
                          "SV",
                          "GQ",
                          "ER",
                          "EE",
                          "ET",
                          "FK",
                          "FO",
                          "FJ",
                          "FI",
                          "FR",
                          "GF",
                          "PF",
                          "TF",
                          "GA",
                          "GM",
                          "GE",
                          "DE",
                          "GH",
                          "GI",
                          "GR",
                          "GL",
                          "GD",
                          "GP",
                          "GU",
                          "GT",
                          "GN",
                          "GW",
                          "GY",
                          "HT",
                          "HM",
                          "VA",
                          "HN",
                          "HK",
                          "HU",
                          "IS",
                          "IN",
                          "ID",
                          "IR",
                          "IQ",
                          "IE",
                          "IL",
                          "IT",
                          "JM",
                          "JP",
                          "JO",
                          "KZ",
                          "KE",
                          "KI",
                          "KP",
                          "KR",
                          "KW",
                          "KG",
                          "LA",
                          "LV",
                          "LB",
                          "LS",
                          "LR",
                          "LY",
                          "LI",
                          "LT",
                          "LU",
                          "MO",
                          "MG",
                          "MW",
                          "MY",
                          "MV",
                          "ML",
                          "MT",
                          "MH",
                          "MQ",
                          "MR",
                          "MU",
                          "YT",
                          "MX",
                          "FM",
                          "MD",
                          "MC",
                          "MN",
                          "MS",
                          "MA",
                          "MZ",
                          "MM",
                          "NA",
                          "NR",
                          "NP",
                          "NL",
                          "NC",
                          "NZ",
                          "NI",
                          "NE",
                          "NG",
                          "NU",
                          "NF",
                          "MK",
                          "MP",
                          "NO",
                          "OM",
                          "PK",
                          "PW",
                          "PS",
                          "PA",
                          "PG",
                          "PY",
                          "PE",
                          "PH",
                          "PN",
                          "PL",
                          "PT",
                          "PR",
                          "QA",
                          "RE",
                          "RO",
                          "RU",
                          "RW",
                          "SH",
                          "KN",
                          "LC",
                          "PM",
                          "VC",
                          "WS",
                          "SM",
                          "ST",
                          "SA",
                          "SN",
                          "SC",
                          "SL",
                          "SG",
                          "SK",
                          "SI",
                          "SB",
                          "SO",
                          "ZA",
                          "GS",
                          "ES",
                          "LK",
                          "SD",
                          "SR",
                          "SJ",
                          "SZ",
                          "SE",
                          "CH",
                          "SY",
                          "TW",
                          "TJ",
                          "TZ",
                          "TH",
                          "TL",
                          "TG",
                          "TK",
                          "TO",
                          "TT",
                          "TN",
                          "TR",
                          "TM",
                          "TC",
                          "TV",
                          "UG",
                          "UA",
                          "AE",
                          "GB",
                          "US",
                          "UM",
                          "UY",
                          "UZ",
                          "VU",
                          "VE",
                          "VN",
                          "VG",
                          "VI",
                          "WF",
                          "EH",
                          "YE",
                          "ZM",
                          "ZW",
                          "AX",
                          "BQ",
                          "CW",
                          "GG",
                          "IM",
                          "JE",
                          "ME",
                          "BL",
                          "MF",
                          "RS",
                          "SX",
                          "SS",
                          "XK"
                        ]
                      ]
                    },
                    "phone": {
                      "type": "string",
                      "nullable": true,
                      "description": "Phone number",
                      "example": "+1.4155551234"
                    },
                    "fax": {
                      "type": "string",
                      "nullable": true,
                      "description": "Fax number",
                      "example": "+1.4155551235"
                    },
                    "email": {
                      "type": "string",
                      "nullable": true,
                      "description": "Email address",
                      "example": "john@example.com"
                    },
                    "url": {
                      "type": "string",
                      "nullable": true,
                      "description": "Website URL",
                      "example": "https://example.com"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "org",
                    "address",
                    "city",
                    "state",
                    "postal_code",
                    "country_code",
                    "phone",
                    "fax",
                    "email",
                    "url"
                  ],
                  "description": "Administrative contact information"
                },
                "tech": {
                  "type": "object",
                  "nullable": true,
                  "properties": {
                    "id": {
                      "type": "string",
                      "nullable": true,
                      "description": "Contact identifier",
                      "example": "CONTACT-123"
                    },
                    "name": {
                      "type": "string",
                      "nullable": true,
                      "description": "Contact name",
                      "example": "John Doe"
                    },
                    "org": {
                      "type": "string",
                      "nullable": true,
                      "description": "Organization name",
                      "example": "Example Corp"
                    },
                    "address": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "type": "string"
                      },
                      "description": "Street address lines",
                      "example": [
                        "123 Main St",
                        "Suite 100"
                      ]
                    },
                    "city": {
                      "type": "string",
                      "nullable": true,
                      "description": "City",
                      "example": "San Francisco"
                    },
                    "state": {
                      "type": "string",
                      "nullable": true,
                      "description": "State or province",
                      "example": "CA"
                    },
                    "postal_code": {
                      "type": "string",
                      "nullable": true,
                      "description": "Postal code",
                      "example": "94105"
                    },
                    "country_code": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO country code",
                      "examples": [
                        [
                          "AF",
                          "AL",
                          "DZ",
                          "AS",
                          "AD",
                          "AO",
                          "AI",
                          "AQ",
                          "AG",
                          "AR",
                          "AM",
                          "AW",
                          "AU",
                          "AT",
                          "AZ",
                          "BS",
                          "BH",
                          "BD",
                          "BB",
                          "BY",
                          "BE",
                          "BZ",
                          "BJ",
                          "BM",
                          "BT",
                          "BO",
                          "BA",
                          "BW",
                          "BV",
                          "BR",
                          "IO",
                          "BN",
                          "BG",
                          "BF",
                          "BI",
                          "KH",
                          "CM",
                          "CA",
                          "CV",
                          "KY",
                          "CF",
                          "TD",
                          "CL",
                          "CN",
                          "CX",
                          "CC",
                          "CO",
                          "KM",
                          "CG",
                          "CD",
                          "CK",
                          "CR",
                          "CI",
                          "HR",
                          "CU",
                          "CY",
                          "CZ",
                          "DK",
                          "DJ",
                          "DM",
                          "DO",
                          "EC",
                          "EG",
                          "SV",
                          "GQ",
                          "ER",
                          "EE",
                          "ET",
                          "FK",
                          "FO",
                          "FJ",
                          "FI",
                          "FR",
                          "GF",
                          "PF",
                          "TF",
                          "GA",
                          "GM",
                          "GE",
                          "DE",
                          "GH",
                          "GI",
                          "GR",
                          "GL",
                          "GD",
                          "GP",
                          "GU",
                          "GT",
                          "GN",
                          "GW",
                          "GY",
                          "HT",
                          "HM",
                          "VA",
                          "HN",
                          "HK",
                          "HU",
                          "IS",
                          "IN",
                          "ID",
                          "IR",
                          "IQ",
                          "IE",
                          "IL",
                          "IT",
                          "JM",
                          "JP",
                          "JO",
                          "KZ",
                          "KE",
                          "KI",
                          "KP",
                          "KR",
                          "KW",
                          "KG",
                          "LA",
                          "LV",
                          "LB",
                          "LS",
                          "LR",
                          "LY",
                          "LI",
                          "LT",
                          "LU",
                          "MO",
                          "MG",
                          "MW",
                          "MY",
                          "MV",
                          "ML",
                          "MT",
                          "MH",
                          "MQ",
                          "MR",
                          "MU",
                          "YT",
                          "MX",
                          "FM",
                          "MD",
                          "MC",
                          "MN",
                          "MS",
                          "MA",
                          "MZ",
                          "MM",
                          "NA",
                          "NR",
                          "NP",
                          "NL",
                          "NC",
                          "NZ",
                          "NI",
                          "NE",
                          "NG",
                          "NU",
                          "NF",
                          "MK",
                          "MP",
                          "NO",
                          "OM",
                          "PK",
                          "PW",
                          "PS",
                          "PA",
                          "PG",
                          "PY",
                          "PE",
                          "PH",
                          "PN",
                          "PL",
                          "PT",
                          "PR",
                          "QA",
                          "RE",
                          "RO",
                          "RU",
                          "RW",
                          "SH",
                          "KN",
                          "LC",
                          "PM",
                          "VC",
                          "WS",
                          "SM",
                          "ST",
                          "SA",
                          "SN",
                          "SC",
                          "SL",
                          "SG",
                          "SK",
                          "SI",
                          "SB",
                          "SO",
                          "ZA",
                          "GS",
                          "ES",
                          "LK",
                          "SD",
                          "SR",
                          "SJ",
                          "SZ",
                          "SE",
                          "CH",
                          "SY",
                          "TW",
                          "TJ",
                          "TZ",
                          "TH",
                          "TL",
                          "TG",
                          "TK",
                          "TO",
                          "TT",
                          "TN",
                          "TR",
                          "TM",
                          "TC",
                          "TV",
                          "UG",
                          "UA",
                          "AE",
                          "GB",
                          "US",
                          "UM",
                          "UY",
                          "UZ",
                          "VU",
                          "VE",
                          "VN",
                          "VG",
                          "VI",
                          "WF",
                          "EH",
                          "YE",
                          "ZM",
                          "ZW",
                          "AX",
                          "BQ",
                          "CW",
                          "GG",
                          "IM",
                          "JE",
                          "ME",
                          "BL",
                          "MF",
                          "RS",
                          "SX",
                          "SS",
                          "XK"
                        ]
                      ]
                    },
                    "phone": {
                      "type": "string",
                      "nullable": true,
                      "description": "Phone number",
                      "example": "+1.4155551234"
                    },
                    "fax": {
                      "type": "string",
                      "nullable": true,
                      "description": "Fax number",
                      "example": "+1.4155551235"
                    },
                    "email": {
                      "type": "string",
                      "nullable": true,
                      "description": "Email address",
                      "example": "john@example.com"
                    },
                    "url": {
                      "type": "string",
                      "nullable": true,
                      "description": "Website URL",
                      "example": "https://example.com"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "org",
                    "address",
                    "city",
                    "state",
                    "postal_code",
                    "country_code",
                    "phone",
                    "fax",
                    "email",
                    "url"
                  ],
                  "description": "Technical contact information"
                },
                "billing": {
                  "type": "object",
                  "nullable": true,
                  "properties": {
                    "id": {
                      "type": "string",
                      "nullable": true,
                      "description": "Contact identifier",
                      "example": "CONTACT-123"
                    },
                    "name": {
                      "type": "string",
                      "nullable": true,
                      "description": "Contact name",
                      "example": "John Doe"
                    },
                    "org": {
                      "type": "string",
                      "nullable": true,
                      "description": "Organization name",
                      "example": "Example Corp"
                    },
                    "address": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "type": "string"
                      },
                      "description": "Street address lines",
                      "example": [
                        "123 Main St",
                        "Suite 100"
                      ]
                    },
                    "city": {
                      "type": "string",
                      "nullable": true,
                      "description": "City",
                      "example": "San Francisco"
                    },
                    "state": {
                      "type": "string",
                      "nullable": true,
                      "description": "State or province",
                      "example": "CA"
                    },
                    "postal_code": {
                      "type": "string",
                      "nullable": true,
                      "description": "Postal code",
                      "example": "94105"
                    },
                    "country_code": {
                      "type": "string",
                      "nullable": true,
                      "description": "ISO country code",
                      "examples": [
                        [
                          "AF",
                          "AL",
                          "DZ",
                          "AS",
                          "AD",
                          "AO",
                          "AI",
                          "AQ",
                          "AG",
                          "AR",
                          "AM",
                          "AW",
                          "AU",
                          "AT",
                          "AZ",
                          "BS",
                          "BH",
                          "BD",
                          "BB",
                          "BY",
                          "BE",
                          "BZ",
                          "BJ",
                          "BM",
                          "BT",
                          "BO",
                          "BA",
                          "BW",
                          "BV",
                          "BR",
                          "IO",
                          "BN",
                          "BG",
                          "BF",
                          "BI",
                          "KH",
                          "CM",
                          "CA",
                          "CV",
                          "KY",
                          "CF",
                          "TD",
                          "CL",
                          "CN",
                          "CX",
                          "CC",
                          "CO",
                          "KM",
                          "CG",
                          "CD",
                          "CK",
                          "CR",
                          "CI",
                          "HR",
                          "CU",
                          "CY",
                          "CZ",
                          "DK",
                          "DJ",
                          "DM",
                          "DO",
                          "EC",
                          "EG",
                          "SV",
                          "GQ",
                          "ER",
                          "EE",
                          "ET",
                          "FK",
                          "FO",
                          "FJ",
                          "FI",
                          "FR",
                          "GF",
                          "PF",
                          "TF",
                          "GA",
                          "GM",
                          "GE",
                          "DE",
                          "GH",
                          "GI",
                          "GR",
                          "GL",
                          "GD",
                          "GP",
                          "GU",
                          "GT",
                          "GN",
                          "GW",
                          "GY",
                          "HT",
                          "HM",
                          "VA",
                          "HN",
                          "HK",
                          "HU",
                          "IS",
                          "IN",
                          "ID",
                          "IR",
                          "IQ",
                          "IE",
                          "IL",
                          "IT",
                          "JM",
                          "JP",
                          "JO",
                          "KZ",
                          "KE",
                          "KI",
                          "KP",
                          "KR",
                          "KW",
                          "KG",
                          "LA",
                          "LV",
                          "LB",
                          "LS",
                          "LR",
                          "LY",
                          "LI",
                          "LT",
                          "LU",
                          "MO",
                          "MG",
                          "MW",
                          "MY",
                          "MV",
                          "ML",
                          "MT",
                          "MH",
                          "MQ",
                          "MR",
                          "MU",
                          "YT",
                          "MX",
                          "FM",
                          "MD",
                          "MC",
                          "MN",
                          "MS",
                          "MA",
                          "MZ",
                          "MM",
                          "NA",
                          "NR",
                          "NP",
                          "NL",
                          "NC",
                          "NZ",
                          "NI",
                          "NE",
                          "NG",
                          "NU",
                          "NF",
                          "MK",
                          "MP",
                          "NO",
                          "OM",
                          "PK",
                          "PW",
                          "PS",
                          "PA",
                          "PG",
                          "PY",
                          "PE",
                          "PH",
                          "PN",
                          "PL",
                          "PT",
                          "PR",
                          "QA",
                          "RE",
                          "RO",
                          "RU",
                          "RW",
                          "SH",
                          "KN",
                          "LC",
                          "PM",
                          "VC",
                          "WS",
                          "SM",
                          "ST",
                          "SA",
                          "SN",
                          "SC",
                          "SL",
                          "SG",
                          "SK",
                          "SI",
                          "SB",
                          "SO",
                          "ZA",
                          "GS",
                          "ES",
                          "LK",
                          "SD",
                          "SR",
                          "SJ",
                          "SZ",
                          "SE",
                          "CH",
                          "SY",
                          "TW",
                          "TJ",
                          "TZ",
                          "TH",
                          "TL",
                          "TG",
                          "TK",
                          "TO",
                          "TT",
                          "TN",
                          "TR",
                          "TM",
                          "TC",
                          "TV",
                          "UG",
                          "UA",
                          "AE",
                          "GB",
                          "US",
                          "UM",
                          "UY",
                          "UZ",
                          "VU",
                          "VE",
                          "VN",
                          "VG",
                          "VI",
                          "WF",
                          "EH",
                          "YE",
                          "ZM",
                          "ZW",
                          "AX",
                          "BQ",
                          "CW",
                          "GG",
                          "IM",
                          "JE",
                          "ME",
                          "BL",
                          "MF",
                          "RS",
                          "SX",
                          "SS",
                          "XK"
                        ]
                      ]
                    },
                    "phone": {
                      "type": "string",
                      "nullable": true,
                      "description": "Phone number",
                      "example": "+1.4155551234"
                    },
                    "fax": {
                      "type": "string",
                      "nullable": true,
                      "description": "Fax number",
                      "example": "+1.4155551235"
                    },
                    "email": {
                      "type": "string",
                      "nullable": true,
                      "description": "Email address",
                      "example": "john@example.com"
                    },
                    "url": {
                      "type": "string",
                      "nullable": true,
                      "description": "Website URL",
                      "example": "https://example.com"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "org",
                    "address",
                    "city",
                    "state",
                    "postal_code",
                    "country_code",
                    "phone",
                    "fax",
                    "email",
                    "url"
                  ],
                  "description": "Billing contact information"
                }
              },
              "required": [
                "domain_name",
                "domain_name_unicode",
                "creation_date",
                "expiration_date",
                "updated_date",
                "nameservers",
                "dnssec",
                "status",
                "registrar",
                "registrant",
                "admin",
                "tech",
                "billing"
              ]
            },
            "description": "The tool-specific results from the Domain tool"
          }
        },
        "required": [
          "tool",
          "query",
          "requestId",
          "timestamp",
          "elapsed",
          "cached",
          "errorCode",
          "errorName",
          "errorMessage",
          "results"
        ]
      }
    },
    "parameters": {}
  },
  "paths": {
    "/api/v1/dns/{query}": {
      "get": {
        "description": "Query DNS records including A, AAAA, CNAME, MX, NS, TXT and more for comprehensive domain analysis.",
        "summary": "DNS Lookup",
        "tags": [
          "DNS Lookup"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "description": "Domain name, IP address, or other query string",
              "example": "google.com"
            },
            "required": true,
            "description": "Domain name, IP address, or other query string",
            "name": "query",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "API key for authentication (alternative to header)",
              "example": "YOUR-API-KEY"
            },
            "required": false,
            "description": "API key for authentication (alternative to header)",
            "name": "key",
            "in": "query"
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "result",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "ALL",
                "REVERSE",
                "SPF",
                "SOA",
                "NS",
                "A",
                "AAAA",
                "CNAME",
                "DNAME",
                "MX",
                "TXT",
                "CAA",
                "TLSA",
                "DS",
                "DNSKEY",
                "RRSIG",
                "NSEC",
                "NSEC3",
                "NSEC3PARAM",
                "CDS",
                "CDNSKEY",
                "KEY",
                "SIG",
                "SRV",
                "HTTPS",
                "SVCB",
                "CERT",
                "HINFO",
                "TSIG",
                "OPENPGPKEY",
                "RP",
                "SSHFP",
                "URI",
                "NAPTR",
                "LOC",
                "PTR"
              ],
              "default": "ALL"
            },
            "required": false,
            "name": "type",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "udp",
                "tcp"
              ],
              "default": "tcp"
            },
            "required": false,
            "name": "transport",
            "in": "query"
          },
          {
            "schema": {
              "type": "string"
            },
            "required": false,
            "name": "server",
            "in": "query"
          },
          {
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "number"
                },
                {
                  "type": "string"
                }
              ],
              "default": true
            },
            "required": false,
            "name": "recursive",
            "in": "query"
          },
          {
            "schema": {
              "anyOf": [
                {
                  "type": "boolean"
                },
                {
                  "type": "number"
                },
                {
                  "type": "string"
                }
              ],
              "default": false
            },
            "required": false,
            "name": "dnssec",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "API key for authentication",
              "example": "YOUR-API-KEY"
            },
            "required": false,
            "description": "API key for authentication",
            "name": "x-api-key",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful dns response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DnsApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tool": {
                      "type": "string",
                      "enum": [
                        "dns",
                        "domain"
                      ],
                      "description": "Tool that generated this result",
                      "examples": [
                        "dns",
                        "domain"
                      ]
                    },
                    "query": {
                      "type": "string",
                      "description": "The original query string",
                      "example": "google.com"
                    },
                    "requestId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Unique request identifier that generated this result",
                      "example": "d9a4b7c2-3f6e-4a8d-9b5c-7e2f4a9b6c3d"
                    },
                    "timestamp": {
                      "type": "string",
                      "description": "UTC timestamp when the result was generated",
                      "example": "2025-01-15T10:30:00.000Z"
                    },
                    "elapsed": {
                      "type": "number",
                      "nullable": true,
                      "description": "Time taken to generate the result in milliseconds",
                      "example": 245
                    },
                    "cached": {
                      "type": "boolean",
                      "description": "Whether this result was served from cache",
                      "example": false
                    },
                    "errorCode": {
                      "type": "number",
                      "description": "Error code if the request failed",
                      "example": 404
                    },
                    "errorName": {
                      "type": "string",
                      "description": "Error name if the request failed",
                      "example": "Domain Not Found"
                    },
                    "errorMessage": {
                      "type": "string",
                      "description": "Human-readable error message if the request failed",
                      "example": "The requested domain does not exist."
                    },
                    "results": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "nullable": true
                      },
                      "description": "Tool-specific results data"
                    }
                  },
                  "required": [
                    "tool",
                    "query",
                    "requestId",
                    "timestamp",
                    "elapsed",
                    "cached",
                    "errorCode",
                    "errorName",
                    "errorMessage",
                    "results"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized Request - Invalid, missing, or expired API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tool": {
                      "type": "string",
                      "enum": [
                        "dns",
                        "domain"
                      ],
                      "description": "Tool that generated this result",
                      "examples": [
                        "dns",
                        "domain"
                      ]
                    },
                    "query": {
                      "type": "string",
                      "description": "The original query string",
                      "example": "google.com"
                    },
                    "requestId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Unique request identifier that generated this result",
                      "example": "d9a4b7c2-3f6e-4a8d-9b5c-7e2f4a9b6c3d"
                    },
                    "timestamp": {
                      "type": "string",
                      "description": "UTC timestamp when the result was generated",
                      "example": "2025-01-15T10:30:00.000Z"
                    },
                    "elapsed": {
                      "type": "number",
                      "nullable": true,
                      "description": "Time taken to generate the result in milliseconds",
                      "example": 245
                    },
                    "cached": {
                      "type": "boolean",
                      "description": "Whether this result was served from cache",
                      "example": false
                    },
                    "errorCode": {
                      "type": "number",
                      "description": "Error code if the request failed",
                      "example": 404
                    },
                    "errorName": {
                      "type": "string",
                      "description": "Error name if the request failed",
                      "example": "Domain Not Found"
                    },
                    "errorMessage": {
                      "type": "string",
                      "description": "Human-readable error message if the request failed",
                      "example": "The requested domain does not exist."
                    },
                    "results": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "nullable": true
                      },
                      "description": "Tool-specific results data"
                    }
                  },
                  "required": [
                    "tool",
                    "query",
                    "requestId",
                    "timestamp",
                    "elapsed",
                    "cached",
                    "errorCode",
                    "errorName",
                    "errorMessage",
                    "results"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tool": {
                      "type": "string",
                      "enum": [
                        "dns",
                        "domain"
                      ],
                      "description": "Tool that generated this result",
                      "examples": [
                        "dns",
                        "domain"
                      ]
                    },
                    "query": {
                      "type": "string",
                      "description": "The original query string",
                      "example": "google.com"
                    },
                    "requestId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Unique request identifier that generated this result",
                      "example": "d9a4b7c2-3f6e-4a8d-9b5c-7e2f4a9b6c3d"
                    },
                    "timestamp": {
                      "type": "string",
                      "description": "UTC timestamp when the result was generated",
                      "example": "2025-01-15T10:30:00.000Z"
                    },
                    "elapsed": {
                      "type": "number",
                      "nullable": true,
                      "description": "Time taken to generate the result in milliseconds",
                      "example": 245
                    },
                    "cached": {
                      "type": "boolean",
                      "description": "Whether this result was served from cache",
                      "example": false
                    },
                    "errorCode": {
                      "type": "number",
                      "description": "Error code if the request failed",
                      "example": 404
                    },
                    "errorName": {
                      "type": "string",
                      "description": "Error name if the request failed",
                      "example": "Domain Not Found"
                    },
                    "errorMessage": {
                      "type": "string",
                      "description": "Human-readable error message if the request failed",
                      "example": "The requested domain does not exist."
                    },
                    "results": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "nullable": true
                      },
                      "description": "Tool-specific results data"
                    }
                  },
                  "required": [
                    "tool",
                    "query",
                    "requestId",
                    "timestamp",
                    "elapsed",
                    "cached",
                    "errorCode",
                    "errorName",
                    "errorMessage",
                    "results"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Error Processing Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tool": {
                      "type": "string",
                      "enum": [
                        "dns",
                        "domain"
                      ],
                      "description": "Tool that generated this result",
                      "examples": [
                        "dns",
                        "domain"
                      ]
                    },
                    "query": {
                      "type": "string",
                      "description": "The original query string",
                      "example": "google.com"
                    },
                    "requestId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Unique request identifier that generated this result",
                      "example": "d9a4b7c2-3f6e-4a8d-9b5c-7e2f4a9b6c3d"
                    },
                    "timestamp": {
                      "type": "string",
                      "description": "UTC timestamp when the result was generated",
                      "example": "2025-01-15T10:30:00.000Z"
                    },
                    "elapsed": {
                      "type": "number",
                      "nullable": true,
                      "description": "Time taken to generate the result in milliseconds",
                      "example": 245
                    },
                    "cached": {
                      "type": "boolean",
                      "description": "Whether this result was served from cache",
                      "example": false
                    },
                    "errorCode": {
                      "type": "number",
                      "description": "Error code if the request failed",
                      "example": 404
                    },
                    "errorName": {
                      "type": "string",
                      "description": "Error name if the request failed",
                      "example": "Domain Not Found"
                    },
                    "errorMessage": {
                      "type": "string",
                      "description": "Human-readable error message if the request failed",
                      "example": "The requested domain does not exist."
                    },
                    "results": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "nullable": true
                      },
                      "description": "Tool-specific results data"
                    }
                  },
                  "required": [
                    "tool",
                    "query",
                    "requestId",
                    "timestamp",
                    "elapsed",
                    "cached",
                    "errorCode",
                    "errorName",
                    "errorMessage",
                    "results"
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/domain/{query}": {
      "get": {
        "description": "Get comprehensive and unified domain info by checking both RDAP and Whois. Get structured ownership, registrar, and technical details.",
        "summary": "Domain Lookup",
        "tags": [
          "Domain Lookup"
        ],
        "parameters": [
          {
            "schema": {
              "type": "string",
              "minLength": 1,
              "description": "Domain name, IP address, or other query string",
              "example": "google.com"
            },
            "required": true,
            "description": "Domain name, IP address, or other query string",
            "name": "query",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "description": "API key for authentication (alternative to header)",
              "example": "YOUR-API-KEY"
            },
            "required": false,
            "description": "API key for authentication (alternative to header)",
            "name": "key",
            "in": "query"
          },
          {
            "schema": {
              "type": "string",
              "description": "API key for authentication",
              "example": "YOUR-API-KEY"
            },
            "required": false,
            "description": "API key for authentication",
            "name": "x-api-key",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful domain response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DomainApiResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tool": {
                      "type": "string",
                      "enum": [
                        "dns",
                        "domain"
                      ],
                      "description": "Tool that generated this result",
                      "examples": [
                        "dns",
                        "domain"
                      ]
                    },
                    "query": {
                      "type": "string",
                      "description": "The original query string",
                      "example": "google.com"
                    },
                    "requestId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Unique request identifier that generated this result",
                      "example": "d9a4b7c2-3f6e-4a8d-9b5c-7e2f4a9b6c3d"
                    },
                    "timestamp": {
                      "type": "string",
                      "description": "UTC timestamp when the result was generated",
                      "example": "2025-01-15T10:30:00.000Z"
                    },
                    "elapsed": {
                      "type": "number",
                      "nullable": true,
                      "description": "Time taken to generate the result in milliseconds",
                      "example": 245
                    },
                    "cached": {
                      "type": "boolean",
                      "description": "Whether this result was served from cache",
                      "example": false
                    },
                    "errorCode": {
                      "type": "number",
                      "description": "Error code if the request failed",
                      "example": 404
                    },
                    "errorName": {
                      "type": "string",
                      "description": "Error name if the request failed",
                      "example": "Domain Not Found"
                    },
                    "errorMessage": {
                      "type": "string",
                      "description": "Human-readable error message if the request failed",
                      "example": "The requested domain does not exist."
                    },
                    "results": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "nullable": true
                      },
                      "description": "Tool-specific results data"
                    }
                  },
                  "required": [
                    "tool",
                    "query",
                    "requestId",
                    "timestamp",
                    "elapsed",
                    "cached",
                    "errorCode",
                    "errorName",
                    "errorMessage",
                    "results"
                  ]
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized Request - Invalid, missing, or expired API key",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tool": {
                      "type": "string",
                      "enum": [
                        "dns",
                        "domain"
                      ],
                      "description": "Tool that generated this result",
                      "examples": [
                        "dns",
                        "domain"
                      ]
                    },
                    "query": {
                      "type": "string",
                      "description": "The original query string",
                      "example": "google.com"
                    },
                    "requestId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Unique request identifier that generated this result",
                      "example": "d9a4b7c2-3f6e-4a8d-9b5c-7e2f4a9b6c3d"
                    },
                    "timestamp": {
                      "type": "string",
                      "description": "UTC timestamp when the result was generated",
                      "example": "2025-01-15T10:30:00.000Z"
                    },
                    "elapsed": {
                      "type": "number",
                      "nullable": true,
                      "description": "Time taken to generate the result in milliseconds",
                      "example": 245
                    },
                    "cached": {
                      "type": "boolean",
                      "description": "Whether this result was served from cache",
                      "example": false
                    },
                    "errorCode": {
                      "type": "number",
                      "description": "Error code if the request failed",
                      "example": 404
                    },
                    "errorName": {
                      "type": "string",
                      "description": "Error name if the request failed",
                      "example": "Domain Not Found"
                    },
                    "errorMessage": {
                      "type": "string",
                      "description": "Human-readable error message if the request failed",
                      "example": "The requested domain does not exist."
                    },
                    "results": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "nullable": true
                      },
                      "description": "Tool-specific results data"
                    }
                  },
                  "required": [
                    "tool",
                    "query",
                    "requestId",
                    "timestamp",
                    "elapsed",
                    "cached",
                    "errorCode",
                    "errorName",
                    "errorMessage",
                    "results"
                  ]
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tool": {
                      "type": "string",
                      "enum": [
                        "dns",
                        "domain"
                      ],
                      "description": "Tool that generated this result",
                      "examples": [
                        "dns",
                        "domain"
                      ]
                    },
                    "query": {
                      "type": "string",
                      "description": "The original query string",
                      "example": "google.com"
                    },
                    "requestId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Unique request identifier that generated this result",
                      "example": "d9a4b7c2-3f6e-4a8d-9b5c-7e2f4a9b6c3d"
                    },
                    "timestamp": {
                      "type": "string",
                      "description": "UTC timestamp when the result was generated",
                      "example": "2025-01-15T10:30:00.000Z"
                    },
                    "elapsed": {
                      "type": "number",
                      "nullable": true,
                      "description": "Time taken to generate the result in milliseconds",
                      "example": 245
                    },
                    "cached": {
                      "type": "boolean",
                      "description": "Whether this result was served from cache",
                      "example": false
                    },
                    "errorCode": {
                      "type": "number",
                      "description": "Error code if the request failed",
                      "example": 404
                    },
                    "errorName": {
                      "type": "string",
                      "description": "Error name if the request failed",
                      "example": "Domain Not Found"
                    },
                    "errorMessage": {
                      "type": "string",
                      "description": "Human-readable error message if the request failed",
                      "example": "The requested domain does not exist."
                    },
                    "results": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "nullable": true
                      },
                      "description": "Tool-specific results data"
                    }
                  },
                  "required": [
                    "tool",
                    "query",
                    "requestId",
                    "timestamp",
                    "elapsed",
                    "cached",
                    "errorCode",
                    "errorName",
                    "errorMessage",
                    "results"
                  ]
                }
              }
            }
          },
          "500": {
            "description": "Error Processing Request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "tool": {
                      "type": "string",
                      "enum": [
                        "dns",
                        "domain"
                      ],
                      "description": "Tool that generated this result",
                      "examples": [
                        "dns",
                        "domain"
                      ]
                    },
                    "query": {
                      "type": "string",
                      "description": "The original query string",
                      "example": "google.com"
                    },
                    "requestId": {
                      "type": "string",
                      "nullable": true,
                      "description": "Unique request identifier that generated this result",
                      "example": "d9a4b7c2-3f6e-4a8d-9b5c-7e2f4a9b6c3d"
                    },
                    "timestamp": {
                      "type": "string",
                      "description": "UTC timestamp when the result was generated",
                      "example": "2025-01-15T10:30:00.000Z"
                    },
                    "elapsed": {
                      "type": "number",
                      "nullable": true,
                      "description": "Time taken to generate the result in milliseconds",
                      "example": 245
                    },
                    "cached": {
                      "type": "boolean",
                      "description": "Whether this result was served from cache",
                      "example": false
                    },
                    "errorCode": {
                      "type": "number",
                      "description": "Error code if the request failed",
                      "example": 404
                    },
                    "errorName": {
                      "type": "string",
                      "description": "Error name if the request failed",
                      "example": "Domain Not Found"
                    },
                    "errorMessage": {
                      "type": "string",
                      "description": "Human-readable error message if the request failed",
                      "example": "The requested domain does not exist."
                    },
                    "results": {
                      "type": "array",
                      "nullable": true,
                      "items": {
                        "nullable": true
                      },
                      "description": "Tool-specific results data"
                    }
                  },
                  "required": [
                    "tool",
                    "query",
                    "requestId",
                    "timestamp",
                    "elapsed",
                    "cached",
                    "errorCode",
                    "errorName",
                    "errorMessage",
                    "results"
                  ]
                }
              }
            }
          }
        }
      }
    }
  }
}