{
  "openapi": "3.0.3",
  "info": {
    "title": "Robtex Pro API",
    "description": "Premium API for DNS, IP, Lightning Network, and network intelligence data",
    "version": "1.0.0",
    "contact": {
      "name": "Robtex Support",
      "email": "info@robtex.com",
      "url": "https://www.robtex.com"
    }
  },
  "servers": [
    {
      "url": "https://freeapi.robtex.com/api/v1",
      "description": "Production server"
    }
  ],
  "paths": {
    "/latest_lightning_channels": {
      "get": {
        "summary": "Get latest Lightning Network channels",
        "description": "Returns the most recently opened Lightning Network channels, sorted by open time descending.",
        "operationId": "latest_lightning_channels",
        "parameters": [
          {
            "name": "count",
            "in": "query",
            "description": "Number of channels to return (1-1000)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10,
              "minimum": 1,
              "maximum": 1000
            },
            "example": 10
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "ok"
                    },
                    "channels": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "infoUrl": {
                            "type": "string",
                            "description": "URL to channel info page"
                          },
                          "scid_numeric": {
                            "type": "string",
                            "description": "Numeric short channel ID"
                          },
                          "scid_x": {
                            "type": "string",
                            "description": "Short channel ID (blockxtxnoxvout format)"
                          },
                          "scid_colon": {
                            "type": "string",
                            "description": "Short channel ID (block:txno:vout format)"
                          },
                          "node1_pub": {
                            "type": "string",
                            "description": "First node public key (66 hex chars)"
                          },
                          "node2_pub": {
                            "type": "string",
                            "description": "Second node public key (66 hex chars)"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ip_reputation": {
      "get": {
        "summary": "Check IP reputation against 100+ blocklists",
        "description": "Check an IP address reputation against 100+ real-time blocklists (DNSBLs). Returns listing status, threat categories, AS info, and blocklist details.",
        "operationId": "ip_reputation",
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "description": "IPv4 or IPv6 address to check (e.g., 8.8.8.8, 2001:4860:4860::8888)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "8.8.8.8"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "ok"
                    },
                    "ip": {
                      "type": "string",
                      "description": "IP address checked"
                    },
                    "infoUrl": {
                      "type": "string",
                      "description": "URL to detailed info page"
                    },
                    "country": {
                      "type": "string",
                      "description": "Country code"
                    },
                    "as": {
                      "type": "object",
                      "properties": {
                        "number": {
                          "type": "integer",
                          "description": "AS number"
                        },
                        "name": {
                          "type": "string",
                          "description": "AS name"
                        },
                        "country": {
                          "type": "string",
                          "description": "AS country"
                        },
                        "datacenter": {
                          "type": "boolean",
                          "description": "Is datacenter/hosting ASN"
                        },
                        "risk_categories": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Risk categories"
                        }
                      }
                    },
                    "reputation": {
                      "type": "object",
                      "properties": {
                        "listed_count": {
                          "type": "integer",
                          "description": "Number of blocklists IP is listed on"
                        },
                        "clean_count": {
                          "type": "integer",
                          "description": "Number of blocklists IP is clean on"
                        },
                        "checked_count": {
                          "type": "integer",
                          "description": "Total blocklists checked"
                        },
                        "listed_on": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "rbl": {
                                "type": "string",
                                "description": "Blocklist name"
                              },
                              "reason": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Listing reasons"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/lookup_dns": {
      "get": {
        "summary": "Lookup DNS records for a hostname",
        "description": "Lookup DNS records (A, AAAA, MX, NS, TXT, CNAME, SOA) for a given hostname. Also returns domain reputation info (Majestic, Tranco rankings, blocklist status).",
        "operationId": "lookup_dns",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Hostname or domain to lookup (e.g., example.com, www.example.com)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "google.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/reverse_lookup_dns_records": {
      "get": {
        "summary": "Find hostnames using a DNS record value",
        "description": "Find hostnames that use a specific DNS record value. Query which hostnames point to an IP address, use a particular nameserver, or reference any DNS value. For example: 'which hostnames point to 1.2.3.4?' or 'which hostnames use chris.ns.cloudflare.com as their nameserver?'",
        "operationId": "reverse_lookup_dns_records",
        "parameters": [
          {
            "name": "value",
            "in": "query",
            "description": "The DNS record value to search for (e.g., IP address, nameserver hostname, mail server, CNAME target)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "8.8.8.8"
          },
          {
            "name": "record_type",
            "in": "query",
            "description": "Type of DNS record to search (A, AAAA, NS, MX, CNAME, TXT)",
            "required": false,
            "schema": {
              "type": "string",
              "default": "A",
              "enum": [
                "A",
                "AAAA",
                "NS",
                "MX",
                "CNAME",
                "TXT"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of hostnames to return",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/reverse_lookup_mx": {
      "get": {
        "summary": "Find hostnames using a mail server",
        "description": "Find hostnames that use a specific mail server. For example: which hostnames use aspmx.l.google.com as their mail server?",
        "operationId": "reverse_lookup_mx",
        "parameters": [
          {
            "name": "mx_server",
            "in": "query",
            "description": "The mail server hostname to search for (e.g., aspmx.l.google.com, mx1.example.com)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "aspmx.l.google.com"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of hostnames to return",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/reverse_lookup_ns": {
      "get": {
        "summary": "Find hostnames using a nameserver",
        "description": "Find hostnames that use a specific nameserver. For example: which hostnames use chris.ns.cloudflare.com as their nameserver?",
        "operationId": "reverse_lookup_ns",
        "parameters": [
          {
            "name": "nameserver",
            "in": "query",
            "description": "The nameserver hostname to search for (e.g., chris.ns.cloudflare.com, ns1.example.com)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "chris.ns.cloudflare.com"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of hostnames to return",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/reverse_lookup_ip": {
      "get": {
        "summary": "Find hostnames pointing to an IP",
        "description": "Find hostnames that point to a specific IP address (IPv4 or IPv6). Searches both A and AAAA records. For example: which hostnames point to 1.2.3.4?",
        "operationId": "reverse_lookup_ip",
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "description": "The IP address to search for (IPv4 or IPv6)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "8.8.8.8"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of hostnames to return",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/historic_reverse_lookup_ns": {
      "get": {
        "summary": "Find hostnames that previously used a nameserver",
        "description": "Find hostnames that *previously* used a specific nameserver but no longer do. Tracks infrastructure migrations and past delegation relationships.",
        "operationId": "historic_reverse_lookup_ns",
        "parameters": [
          {
            "name": "nameserver",
            "in": "query",
            "description": "The nameserver hostname to search for (e.g., chris.ns.cloudflare.com, ns1.example.com)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "chris.ns.cloudflare.com"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of hostnames to return",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/historic_reverse_lookup_mx": {
      "get": {
        "summary": "Find hostnames that previously used a mail server",
        "description": "Find hostnames that *previously* used a specific mail server but no longer do. Tracks email provider migrations and past MX relationships.",
        "operationId": "historic_reverse_lookup_mx",
        "parameters": [
          {
            "name": "mx_server",
            "in": "query",
            "description": "The mail server hostname to search for (e.g., aspmx.l.google.com, mx1.example.com)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "aspmx.l.google.com"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of hostnames to return",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/historic_reverse_lookup_ip": {
      "get": {
        "summary": "Find hostnames that previously pointed to an IP",
        "description": "Find hostnames that *previously* pointed to a specific IP address but no longer do. Tracks hosting migrations and past IP relationships. Searches both A and AAAA records.",
        "operationId": "historic_reverse_lookup_ip",
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "description": "The IP address to search for (IPv4 or IPv6)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "8.8.8.8"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of hostnames to return",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/lookup_mac": {
      "get": {
        "summary": "Look up MAC address vendor from IEEE OUI database",
        "description": "Look up the manufacturer/vendor of a network device by its MAC address. Uses the official IEEE OUI (Organizationally Unique Identifier) database with ~30K entries.",
        "operationId": "lookup_mac",
        "parameters": [
          {
            "name": "mac_address",
            "in": "query",
            "description": "MAC address to look up (e.g., D8:A3:5C:12:34:56, D8-A3-5C-12-34-56, or D8A35C123456). Only the first 6 hex characters (OUI prefix) are used.",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "D8:A3:5C:12:34:56"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "ok"
                    },
                    "mac_address": {
                      "type": "string",
                      "description": "Input MAC address (uppercased)"
                    },
                    "oui_prefix": {
                      "type": "string",
                      "description": "OUI prefix in XX:XX:XX format"
                    },
                    "vendor": {
                      "type": "string",
                      "description": "Vendor/manufacturer name (null if not found)",
                      "nullable": true
                    },
                    "address": {
                      "type": "string",
                      "description": "Vendor address"
                    },
                    "registry": {
                      "type": "string",
                      "description": "IEEE registry type (MA-L, MA-M, MA-S)"
                    },
                    "found": {
                      "type": "boolean",
                      "description": "Whether the OUI was found in the database"
                    },
                    "infoUrl": {
                      "type": "string",
                      "description": "URL to the MAC lookup page on robtex.com"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/lookup_as_whois": {
      "get": {
        "summary": "Lookup AS WHOIS information",
        "description": "Lookup WHOIS information for an Autonomous System (AS) number from the RADB routing database. Returns routing policy, network information, and administrative contacts.",
        "operationId": "lookup_as_whois",
        "parameters": [
          {
            "name": "asn",
            "in": "query",
            "description": "AS number to lookup (e.g., \"AS15169\" or \"15169\" for Google)",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^(AS)?[0-9]+$"
            },
            "example": "AS15169"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/lookup_lightning_node": {
      "get": {
        "summary": "Lookup a Lightning Network node",
        "description": "Lookup a Lightning Network node by public key. Returns node alias, peer count, channel count, and centrality ranking.",
        "operationId": "lookup_lightning_node",
        "parameters": [
          {
            "name": "pubkey",
            "in": "query",
            "description": "Compressed secp256k1 public key (66 hex chars)",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 66,
              "maxLength": 66,
              "pattern": "^(02|03)[0-9a-f]{64}$"
            },
            "example": "03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/lookup_lightning_channel": {
      "get": {
        "summary": "Lookup a Lightning Network channel",
        "description": "Lookup a Lightning channel by channel ID. Supports numeric, block x txn x vout, or block:txn:vout formats.",
        "operationId": "lookup_lightning_channel",
        "parameters": [
          {
            "name": "channel_id",
            "in": "query",
            "description": "Lightning channel ID (numeric, blockxtxnxvout, or block:txn:vout format)",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[0-9]{15,21}$|^[0-9]{3,7}[x:][0-9]{1,6}[x:][0-9]{1,6}$"
            },
            "example": "936795x1154x0"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/lookup_lightning_channels_per_node": {
      "get": {
        "summary": "Get channels for a Lightning node",
        "description": "Lookup all Lightning Network channels for a given node by public key.",
        "operationId": "lookup_lightning_channels_per_node",
        "parameters": [
          {
            "name": "node",
            "in": "query",
            "description": "Compressed secp256k1 public key (66 hex chars)",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 66,
              "maxLength": 66,
              "pattern": "^(02|03)[0-9a-f]{64}$"
            },
            "example": "03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of channels to return",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 10000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/get_recommended_lightning_peers": {
      "get": {
        "summary": "Get recommended Lightning peers",
        "description": "Get recommended Lightning Network peers for a given node. Returns nodes that are NOT currently peered with the specified node but would improve its centrality score if connected.",
        "operationId": "get_recommended_lightning_peers",
        "parameters": [
          {
            "name": "pubkey",
            "in": "query",
            "description": "Compressed secp256k1 public key (66 hex chars)",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 66,
              "maxLength": 66,
              "pattern": "^(02|03)[0-9a-f]{64}$"
            },
            "example": "03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of recommended peers to return",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 10,
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/search_lightning_nodes_by_alias": {
      "get": {
        "summary": "Search Lightning nodes by alias",
        "description": "Search for Lightning Network nodes by partial alias match. Returns nodes whose aliases contain the search term (case-insensitive).",
        "operationId": "search_lightning_nodes_by_alias",
        "parameters": [
          {
            "name": "alias",
            "in": "query",
            "description": "Search term to match against node aliases",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            },
            "example": "ACINQ"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Maximum number of nodes to return",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "minimum": 1,
              "maximum": 100
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/domain_rdap": {
      "get": {
        "summary": "RDAP domain lookup — check availability, registrar, expiry, DNSSEC",
        "description": "Queries the authoritative RDAP registry for a domain. Returns availability status (HTTP 404 = available), and for registered domains: registrar name, registration/expiration dates, nameservers, DNSSEC status, and domain status flags. Uses IANA bootstrap to find the correct RDAP server per TLD. Covers 590+ TLDs.",
        "operationId": "domain_rdap",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "description": "Domain name to look up (e.g., example.com)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "google.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    },
                    "domain": {
                      "type": "string"
                    },
                    "available": {
                      "type": "boolean"
                    },
                    "tld": {
                      "type": "string"
                    },
                    "registrar": {
                      "type": "string"
                    },
                    "registrationDate": {
                      "type": "string"
                    },
                    "expirationDate": {
                      "type": "string"
                    },
                    "nameservers": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "dnssec": {
                      "type": "boolean"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/parse_hostname": {
      "get": {
        "summary": "Parse hostname into eTLD, domain, subdomain",
        "description": "Parse a hostname into its constituent parts using the Mozilla Public Suffix List (9700+ entries). Returns eTLD (effective TLD), registered domain, subdomain, labels, and depth. Handles multi-level eTLDs (co.uk, co.jp, com.au) and platform suffixes (github.io, herokuapp.com).",
        "operationId": "parse_hostname",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Hostname to parse (e.g. www.mail.example.co.uk)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "www.mail.example.co.uk"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/is_subdomain": {
      "get": {
        "summary": "Check if hostname is a subdomain",
        "description": "Check whether a hostname is a subdomain (has labels beyond the registered domain). Uses the Mozilla Public Suffix List for accurate eTLD detection.",
        "operationId": "is_subdomain",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Hostname to check",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "www.example.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/registered_domain": {
      "get": {
        "summary": "Extract registered domain from hostname",
        "description": "Extract the registered domain (eTLD+1) from a hostname. For example, www.mail.example.co.uk returns example.co.uk.",
        "operationId": "registered_domain",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Hostname to extract registered domain from",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "blog.shop.example.co.jp"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/tld_info": {
      "get": {
        "summary": "Get TLD information",
        "description": "Get information about a top-level domain or effective TLD. Returns whether it is in the Public Suffix List, how many sub-suffixes exist, and classification (ccTLD, gTLD, or infrastructure).",
        "operationId": "tld_info",
        "parameters": [
          {
            "name": "tld",
            "in": "query",
            "description": "TLD or eTLD to look up (e.g. \"uk\", \"co.uk\", \"github.io\")",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "co.uk"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/dns_a": {
      "get": {
        "summary": "Get A records for a hostname",
        "description": "Look up A (IPv4 address) records for a hostname.",
        "operationId": "dns_a",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Hostname to look up",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "google.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/dns_aaaa": {
      "get": {
        "summary": "Get AAAA records for a hostname",
        "description": "Look up AAAA (IPv6 address) records for a hostname.",
        "operationId": "dns_aaaa",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Hostname to look up",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "google.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/dns_mx": {
      "get": {
        "summary": "Get MX records for a hostname",
        "description": "Look up MX (mail exchange) records for a hostname. Returns mail servers and their priorities.",
        "operationId": "dns_mx",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Hostname to look up",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "google.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/dns_ns": {
      "get": {
        "summary": "Get NS records for a hostname",
        "description": "Look up NS (nameserver) records for a hostname.",
        "operationId": "dns_ns",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Hostname to look up",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "google.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/dns_txt": {
      "get": {
        "summary": "Get TXT records for a hostname",
        "description": "Look up TXT records for a hostname. Includes SPF, DKIM, DMARC, domain verification, and other text records.",
        "operationId": "dns_txt",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Hostname to look up",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "google.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/dns_cname": {
      "get": {
        "summary": "Get CNAME records for a hostname",
        "description": "Look up CNAME (canonical name / alias) records for a hostname.",
        "operationId": "dns_cname",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Hostname to look up",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "www.github.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/dns_soa": {
      "get": {
        "summary": "Get SOA record for a hostname",
        "description": "Look up SOA (Start of Authority) record for a hostname. Returns primary nameserver, admin email, serial number, and timing values.",
        "operationId": "dns_soa",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Hostname to look up",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "google.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/dns_ptr": {
      "get": {
        "summary": "Get PTR record for an IP",
        "description": "Look up PTR (reverse DNS) record for an IP address. Returns the hostname associated with the IP.",
        "operationId": "dns_ptr",
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "description": "IPv4 or IPv6 address",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "8.8.8.8"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/reverse_lookup_cname": {
      "get": {
        "summary": "Find hostnames CNAMEd to a target",
        "description": "Find hostnames that have a CNAME record pointing to the specified target. Useful for CDN and load balancer investigations.",
        "operationId": "reverse_lookup_cname",
        "parameters": [
          {
            "name": "target",
            "in": "query",
            "description": "CNAME target hostname (e.g. cdn.cloudflare.net)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "cdn.cloudflare.net"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/historic_reverse_lookup_cname": {
      "get": {
        "summary": "Find hostnames that previously CNAMEd to a target",
        "description": "Find hostnames that previously had a CNAME record pointing to the specified target but no longer do. Tracks CDN and infrastructure migrations.",
        "operationId": "historic_reverse_lookup_cname",
        "parameters": [
          {
            "name": "target",
            "in": "query",
            "description": "CNAME target hostname",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "cdn.cloudflare.net"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset for pagination",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ip_geolocation": {
      "get": {
        "summary": "Get geolocation for an IP address",
        "description": "Get geographic location data for an IP address: country, city, region, latitude, longitude, timezone.",
        "operationId": "ip_geolocation",
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "description": "IPv4 or IPv6 address",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "8.8.8.8"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ip_network": {
      "get": {
        "summary": "Get network info for an IP address",
        "description": "Get the containing network (BGP route), AS number, AS name, and route description for an IP address.",
        "operationId": "ip_network",
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "description": "IPv4 or IPv6 address",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "8.8.8.8"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ip_to_asn": {
      "get": {
        "summary": "Map IP to AS number",
        "description": "Lightweight lookup: get just the AS number and netblock for an IP address. Fastest way to map IP to ASN.",
        "operationId": "ip_to_asn",
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "description": "IPv4 or IPv6 address",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "1.1.1.1"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ip_blocklist_check": {
      "get": {
        "summary": "Check IP against threat intelligence blocklists",
        "description": "Check an IP address against IPsum, FireHOL, Tor exit node lists, C2 indicators, Roskomnadzor (Russia), and other threat intelligence feeds. Returns which lists the IP appears on and threat scores.",
        "operationId": "ip_blocklist_check",
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "description": "IPv4 or IPv6 address to check",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "185.220.101.1"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ip_threat_intel": {
      "get": {
        "summary": "Get threat intelligence for an IP",
        "description": "Combined threat intelligence: DNSBL listings, IPsum score, FireHOL lists, bad ASN flag, Tor exit status. Comprehensive threat assessment for an IP address.",
        "operationId": "ip_threat_intel",
        "parameters": [
          {
            "name": "ip",
            "in": "query",
            "description": "IPv4 or IPv6 address",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "185.220.101.1"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/as_info": {
      "get": {
        "summary": "Get AS name and organization",
        "description": "Get the name, organization, country, and description for an Autonomous System number. Lightweight version of as_whois.",
        "operationId": "as_info",
        "parameters": [
          {
            "name": "asn",
            "in": "query",
            "description": "AS number (e.g. \"AS15169\" or \"15169\")",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "AS15169"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/as_prefixes": {
      "get": {
        "summary": "Get announced prefixes for an AS",
        "description": "Get all IPv4 and IPv6 network prefixes (netblocks) announced by an Autonomous System. Returns BGP-visible routes.",
        "operationId": "as_prefixes",
        "parameters": [
          {
            "name": "asn",
            "in": "query",
            "description": "AS number (e.g. \"AS15169\" or \"15169\")",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "AS13335"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/domain_reputation": {
      "get": {
        "summary": "Get domain reputation and threat data",
        "description": "Get comprehensive domain reputation: Majestic rank, Tranco rank, HaGeZi blocklist status, Blackbook malware status, phishing database status, HSTS preload status, and disposable email detection.",
        "operationId": "domain_reputation",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Domain to check",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "google.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/domain_ranking": {
      "get": {
        "summary": "Get domain popularity ranking",
        "description": "Get domain popularity rankings from five independent sources: Majestic Million (backlinks), Tranco top 1M (aggregated traffic), Cloudflare Radar (1.1.1.1 DNS query popularity), Cisco Umbrella (OpenDNS query popularity), and Chrome UX Report (real Chrome user traffic).",
        "operationId": "domain_ranking",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Domain to check",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "github.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/domain_blocklist_check": {
      "get": {
        "summary": "Check domain against DNS blocklists",
        "description": "Check a domain against HaGeZi DNS blocklists, Steven Black unified hosts, Blackbook malware list, phishing databases, Roskomnadzor (Russia), and Citizen Lab censorship lists. Returns which lists the domain appears on.",
        "operationId": "domain_blocklist_check",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Domain to check",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "example.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/domain_shared_ip": {
      "get": {
        "summary": "Find domains sharing the same IP",
        "description": "Find other domains hosted on the same IP address(es) as the target domain. Resolves the domain's A records, then performs reverse IP lookups for each.",
        "operationId": "domain_shared_ip",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Domain to check",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "example.com"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results per IP",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/domain_shared_ns": {
      "get": {
        "summary": "Find domains sharing the same nameservers",
        "description": "Find other domains using the same nameserver(s) as the target domain. Resolves the domain's NS records, then performs reverse NS lookups for each.",
        "operationId": "domain_shared_ns",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Domain to check",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "example.com"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results per NS",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/domain_shared_mx": {
      "get": {
        "summary": "Find domains sharing the same mail server",
        "description": "Find other domains using the same mail server(s) as the target domain. Resolves the domain's MX records, then performs reverse MX lookups for each.",
        "operationId": "domain_shared_mx",
        "parameters": [
          {
            "name": "hostname",
            "in": "query",
            "description": "Domain to check",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "example.com"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results per MX",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 100,
              "minimum": 1,
              "maximum": 1000
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/check_email": {
      "get": {
        "summary": "Verify an email address via SMTP",
        "description": "Verify an email address by connecting to its mail server via SMTP. Checks MX records, tests if the address is accepted (RCPT TO), detects catch-all domains, and reports TLS support. Results are RAM-cached for 1 hour.",
        "operationId": "check_email",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "description": "Email address to verify (e.g., user@example.com)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "user@gmail.com"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "ok"
                    },
                    "email": {
                      "type": "string",
                      "description": "The email address that was checked"
                    },
                    "valid": {
                      "type": "boolean",
                      "description": "Whether the email appears valid (accepted by SMTP server)"
                    },
                    "catchAll": {
                      "type": "boolean",
                      "description": "Whether the domain accepts any address (catch-all)"
                    },
                    "catchAllIndeterminate": {
                      "type": "boolean",
                      "description": "Whether catch-all detection was inconclusive (e.g., rate limited)"
                    },
                    "mxHost": {
                      "type": "string",
                      "description": "The MX host that was connected to",
                      "nullable": true
                    },
                    "mxMissing": {
                      "type": "boolean",
                      "description": "Whether no MX records were found for the domain"
                    },
                    "smtpCode": {
                      "type": "integer",
                      "description": "SMTP response code for the target address (e.g., 250=accepted, 550=rejected)",
                      "nullable": true
                    },
                    "tls": {
                      "type": "boolean",
                      "description": "Whether TLS was used for the SMTP connection"
                    },
                    "error": {
                      "type": "string",
                      "description": "Error message if the check failed",
                      "nullable": true
                    },
                    "durationMs": {
                      "type": "number",
                      "description": "Time taken for the check in milliseconds"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ping": {
      "get": {
        "summary": "API health check",
        "description": "Check if the API is responding. Returns status and server timestamp.",
        "operationId": "ping",
        "parameters": [
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/lookup_bitcoin_transaction": {
      "get": {
        "summary": "Look up a Bitcoin transaction by txid",
        "description": "Returns full transaction details: inputs with addresses and values, outputs with spent status, fee, size/weight, SegWit flag, and Lightning Network channel correlation. Supports both confirmed and mempool transactions.",
        "operationId": "lookup_bitcoin_transaction",
        "parameters": [
          {
            "name": "txid",
            "in": "query",
            "description": "Transaction ID (64 hex characters)",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-fA-F0-9]{64}$"
            },
            "example": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "ok"
                    },
                    "transaction": {
                      "type": "object",
                      "properties": {
                        "txid": {
                          "type": "string",
                          "description": "Transaction ID (64 hex)"
                        },
                        "blockHeight": {
                          "type": "integer",
                          "description": "Block height (null if mempool)",
                          "nullable": true
                        },
                        "blockPosition": {
                          "type": "integer",
                          "description": "Position within block (0 = coinbase)"
                        },
                        "mempool": {
                          "type": "boolean",
                          "description": "True if unconfirmed"
                        },
                        "size": {
                          "type": "integer",
                          "description": "Transaction size in bytes",
                          "nullable": true
                        },
                        "weight": {
                          "type": "integer",
                          "description": "Transaction weight units",
                          "nullable": true
                        },
                        "fee": {
                          "type": "string",
                          "description": "Fee in satoshis",
                          "nullable": true
                        },
                        "flags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Flags: coinbase, segwit, op_return, rbf"
                        },
                        "inputCount": {
                          "type": "integer"
                        },
                        "outputCount": {
                          "type": "integer"
                        },
                        "inputs": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "address": {
                                "type": "string",
                                "nullable": true
                              },
                              "value": {
                                "type": "string",
                                "description": "Satoshis"
                              },
                              "prevTxid": {
                                "type": "string",
                                "nullable": true
                              },
                              "prevVout": {
                                "type": "integer",
                                "nullable": true
                              }
                            }
                          }
                        },
                        "outputs": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "index": {
                                "type": "integer"
                              },
                              "address": {
                                "type": "string",
                                "nullable": true
                              },
                              "value": {
                                "type": "string",
                                "description": "Satoshis"
                              },
                              "spent": {
                                "type": "boolean"
                              }
                            }
                          }
                        },
                        "infoUrl": {
                          "type": "string",
                          "description": "URL to transaction page on hashXP"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/lookup_bitcoin_address": {
      "get": {
        "summary": "Look up a Bitcoin address",
        "description": "Returns address balance, total received/sent, transaction counts, address type (P2PKH, P2SH, P2WPKH, P2TR), first/last seen block, and ransomware/abuse flags. Supports all Bitcoin address formats.",
        "operationId": "lookup_bitcoin_address",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "description": "Bitcoin address (P2PKH, P2SH, Bech32, Bech32m)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "ok"
                    },
                    "address": {
                      "type": "object",
                      "properties": {
                        "address": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string",
                          "description": "p2pkh, p2sh, p2wpkh, p2tr, unknown"
                        },
                        "balance": {
                          "type": "string",
                          "description": "Current balance in satoshis"
                        },
                        "totalReceived": {
                          "type": "string",
                          "description": "Total received in satoshis"
                        },
                        "totalSent": {
                          "type": "string",
                          "description": "Total sent in satoshis"
                        },
                        "txCount": {
                          "type": "integer",
                          "description": "Total transaction count"
                        },
                        "firstSeenBlock": {
                          "type": "integer",
                          "nullable": true
                        },
                        "lastSeenBlock": {
                          "type": "integer",
                          "nullable": true
                        },
                        "infoUrl": {
                          "type": "string"
                        }
                      }
                    },
                    "abuse": {
                      "type": "object",
                      "nullable": true,
                      "description": "Abuse flags (null if clean)",
                      "properties": {
                        "ransomware": {
                          "type": "object",
                          "properties": {
                            "family": {
                              "type": "string",
                              "description": "Ransomware family name"
                            },
                            "balanceUSD": {
                              "type": "number",
                              "description": "Total balance in USD"
                            }
                          }
                        },
                        "ofacSanctioned": {
                          "type": "boolean",
                          "description": "OFAC sanctions list"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/lookup_bitcoin_block": {
      "get": {
        "summary": "Look up a Bitcoin block by height",
        "description": "Returns block header (hash, timestamp, version, merkle root, difficulty, nonce), transaction count, and list of transaction IDs. Supports lookup by block height.",
        "operationId": "lookup_bitcoin_block",
        "parameters": [
          {
            "name": "height",
            "in": "query",
            "description": "Block height (0 = genesis block)",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 0
            },
            "example": 800000
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "ok"
                    },
                    "block": {
                      "type": "object",
                      "properties": {
                        "height": {
                          "type": "integer"
                        },
                        "hash": {
                          "type": "string",
                          "description": "Block hash (64 hex)"
                        },
                        "timestamp": {
                          "type": "integer",
                          "description": "Unix timestamp"
                        },
                        "version": {
                          "type": "integer",
                          "nullable": true
                        },
                        "versionHex": {
                          "type": "string",
                          "nullable": true
                        },
                        "merkleRoot": {
                          "type": "string",
                          "nullable": true
                        },
                        "previousBlockHash": {
                          "type": "string",
                          "nullable": true
                        },
                        "nextBlockHash": {
                          "type": "string",
                          "nullable": true
                        },
                        "difficulty": {
                          "type": "number"
                        },
                        "nonce": {
                          "type": "integer"
                        },
                        "size": {
                          "type": "integer",
                          "description": "Block size in bytes"
                        },
                        "weight": {
                          "type": "integer",
                          "description": "Block weight units"
                        },
                        "txCount": {
                          "type": "integer",
                          "description": "Number of transactions"
                        },
                        "txids": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          },
                          "description": "Transaction IDs"
                        },
                        "infoUrl": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/bitcoin_address_transactions": {
      "get": {
        "summary": "List transactions for a Bitcoin address",
        "description": "Returns a paginated list of transactions involving a Bitcoin address. Filter by direction: received (incoming funds), sent (outgoing funds), or all. Returns up to 100 transactions per call, sorted by block height descending (most recent first).",
        "operationId": "bitcoin_address_transactions",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "description": "Bitcoin address",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"
          },
          {
            "name": "direction",
            "in": "query",
            "description": "Transaction direction filter",
            "required": false,
            "schema": {
              "type": "string",
              "default": "all",
              "enum": [
                "received",
                "sent",
                "all"
              ]
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "ok"
                    },
                    "address": {
                      "type": "string"
                    },
                    "direction": {
                      "type": "string"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "transactions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "txid": {
                            "type": "string"
                          },
                          "blockHeight": {
                            "type": "integer",
                            "nullable": true
                          },
                          "blockPosition": {
                            "type": "integer"
                          },
                          "infoUrl": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/bitcoin_transaction_spends": {
      "get": {
        "summary": "Find which transactions spend the outputs of a given transaction",
        "description": "For a given transaction, returns which subsequent transactions consumed its outputs. Useful for UTXO tracking and chain analysis. Shows the spending txid for each output.",
        "operationId": "bitcoin_transaction_spends",
        "parameters": [
          {
            "name": "txid",
            "in": "query",
            "description": "Transaction ID (64 hex characters)",
            "required": true,
            "schema": {
              "type": "string",
              "pattern": "^[a-fA-F0-9]{64}$"
            },
            "example": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "ok"
                    },
                    "txid": {
                      "type": "string"
                    },
                    "outputCount": {
                      "type": "integer"
                    },
                    "spentCount": {
                      "type": "integer"
                    },
                    "unspentCount": {
                      "type": "integer"
                    },
                    "outputs": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "outputIndex": {
                            "type": "integer"
                          },
                          "value": {
                            "type": "string",
                            "description": "Satoshis"
                          },
                          "spent": {
                            "type": "boolean"
                          },
                          "spendingTxid": {
                            "type": "string",
                            "nullable": true
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/bitcoin_blockchain_stats": {
      "get": {
        "summary": "Get Bitcoin blockchain statistics over a block range",
        "description": "Returns cumulative blockchain metrics over a configurable block range. Available metrics include: txs, fees, segwittx, inputs, outputs, insats, outsats, btcusd, volusd, unspentoutputs, fullyspent, unspentsats, addresses, satoshiblocks, clnopen, clnclose, satlnopen, satlnclose, basereward, blockreward, batched, rbf, version2tx, lowestfee, and more. Returns sampled data points suitable for charting.",
        "operationId": "bitcoin_blockchain_stats",
        "parameters": [
          {
            "name": "metric",
            "in": "query",
            "description": "Metric name (e.g., txs, fees, segwittx, btcusd, clnopen)",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "txs"
          },
          {
            "name": "startBlock",
            "in": "query",
            "description": "Start block height",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 0,
              "minimum": 0
            }
          },
          {
            "name": "endBlock",
            "in": "query",
            "description": "End block height (defaults to latest)",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0
            }
          },
          {
            "name": "samples",
            "in": "query",
            "description": "Number of data points to return (evenly spaced across range)",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 200,
              "minimum": 10,
              "maximum": 2000
            }
          },
          {
            "$ref": "#/components/parameters/format"
          },
          {
            "$ref": "#/components/parameters/callback"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "ok"
                    },
                    "metric": {
                      "type": "string"
                    },
                    "startBlock": {
                      "type": "integer"
                    },
                    "endBlock": {
                      "type": "integer"
                    },
                    "maxHeight": {
                      "type": "integer",
                      "description": "Latest block height in database"
                    },
                    "dataPointCount": {
                      "type": "integer"
                    },
                    "dataPoints": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "blockHeight": {
                            "type": "integer"
                          },
                          "value": {
                            "type": "number",
                            "description": "Metric value for the interval ending at this block"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "error"
                    },
                    "message": {
                      "type": "string",
                      "example": "Unauthorized"
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "RapidApiProxy": {
        "type": "apiKey",
        "in": "header",
        "name": "X-RapidAPI-Proxy-Secret",
        "description": "RapidAPI proxy secret header"
      }
    },
    "parameters": {
      "format": {
        "name": "format",
        "in": "query",
        "description": "Response format. Default is json. Use callback param for JSONP shorthand.",
        "required": false,
        "schema": {
          "type": "string",
          "enum": [
            "json",
            "jsonp",
            "xml",
            "ndjson",
            "sse",
            "markdown",
            "csv",
            "yaml",
            "html"
          ],
          "default": "json"
        }
      },
      "callback": {
        "name": "callback",
        "in": "query",
        "description": "JSONP callback function name. Implies format=jsonp.",
        "required": false,
        "schema": {
          "type": "string",
          "pattern": "^[a-zA-Z_$][a-zA-Z0-9_$.]*$"
        }
      }
    }
  },
  "security": [
    {
      "RapidApiProxy": []
    }
  ]
}