{
  "openapi": "3.1.0",
  "info": {"title": "DNSProbe API", "version": "1.0.0", "description": "Public DNS lookup and propagation API."},
  "servers": [{"url": "https://dns.selconsulting.io"}],
  "paths": {
    "/api/dns": {
      "get": {
        "summary": "Look up a DNS record",
        "parameters": [
          {"$ref": "#/components/parameters/host"}, {"$ref": "#/components/parameters/type"}, {"$ref": "#/components/parameters/resolver"}
        ],
        "responses": {
          "200": {"description": "DNS response", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/Lookup"}, "example": {"success": true, "host": "garches1.selconsulting.io", "type": "A", "resolver": "1.1.1.1", "timestamp": "2026-09-07T09:30:00+02:00", "dnssec": "not validated", "answers": [{"value": "1.2.3.4", "ttl": 300}]}}}},
          "400": {"description": "Invalid hostname, type, or resolver"}, "404": {"description": "DNS lookup failure"}, "429": {"description": "Rate limit exceeded"}
        }
      }
    },
    "/api/propagation": {
      "get": {
        "summary": "Compare responses from Cloudflare, Google, and Quad9",
        "parameters": [{"$ref": "#/components/parameters/host"}, {"$ref": "#/components/parameters/type"}],
        "responses": {"200": {"description": "Responses grouped by resolver", "content": {"application/json": {"example": {"success": true, "host": "garches1.selconsulting.io", "type": "A", "timestamp": "2026-09-07T09:30:00+02:00", "consistent": true, "resolvers": {"1.1.1.1": {"success": true, "answers": [{"value": "1.2.3.4", "ttl": 300}]}}}}}}, "400": {"description": "Invalid hostname or record type"}, "429": {"description": "Rate limit exceeded"}}
      }
    }
  },
  "components": {
    "parameters": {
      "host": {"name": "host", "in": "query", "required": true, "schema": {"type": "string", "maxLength": 253}, "example": "garches1.selconsulting.io"},
      "type": {"name": "type", "in": "query", "required": false, "schema": {"type": "string", "enum": ["A", "AAAA", "CNAME", "MX", "TXT", "NS", "SOA", "CAA", "PTR"], "default": "A"}},
      "resolver": {"name": "resolver", "in": "query", "required": false, "schema": {"type": "string", "enum": ["system", "1.1.1.1", "8.8.8.8", "9.9.9.9"], "default": "system"}}
    },
    "schemas": {
      "Answer": {"type": "object", "required": ["value", "ttl"], "properties": {"value": {"type": "string"}, "ttl": {"type": "integer", "minimum": 0}}},
      "Lookup": {"type": "object", "required": ["success", "host", "type", "resolver", "timestamp", "answers"], "properties": {"success": {"type": "boolean"}, "host": {"type": "string"}, "type": {"type": "string"}, "resolver": {"type": "string"}, "timestamp": {"type": "string", "format": "date-time"}, "dnssec": {"type": "string"}, "answers": {"type": "array", "items": {"$ref": "#/components/schemas/Answer"}}, "error": {"type": "string"}}}
    }
  }
}
