{"openapi":"3.1.0","info":{"title":"ASNDNS Lookup API","description":"ASN, prefix and DNS lookups over a locally built dataset.","version":"1.2"},"paths":{"/v1/health":{"get":{"summary":"Health","operationId":"health_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/ip/{ip}":{"get":{"summary":"Lookup Ip","operationId":"lookup_ip_v1_ip__ip__get","parameters":[{"name":"ip","in":"path","required":true,"schema":{"type":"string","title":"Ip"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/asn/{asn}":{"get":{"summary":"Lookup Asn","operationId":"lookup_asn_v1_asn__asn__get","parameters":[{"name":"asn","in":"path","required":true,"schema":{"type":"string","title":"Asn"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/asn/{asn}/prefixes":{"get":{"summary":"Asn Prefixes","operationId":"asn_prefixes_v1_asn__asn__prefixes_get","parameters":[{"name":"asn","in":"path","required":true,"schema":{"type":"string","title":"Asn"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":200,"title":"Limit"}},{"name":"family","in":"query","required":false,"schema":{"type":"string","default":"all","title":"Family"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/domain/{domain}":{"get":{"summary":"Lookup Domain","operationId":"lookup_domain_v1_domain__domain__get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/contact":{"post":{"summary":"Contact","description":"Stores the message locally. Drain it with `asndns-messages` or forward by cron.","operationId":"contact_v1_contact_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/lookup":{"get":{"summary":"Lookup","description":"Single entry point — detects whether q is an IP, an AS number or a domain.","operationId":"lookup_v1_lookup_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":253,"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/search":{"get":{"summary":"Search Networks","description":"Find networks by holder name — 'cloudflare', 'amazon', 'ntt'.","operationId":"search_networks_v1_search_get","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":64,"title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":25,"title":"Limit"}},{"name":"country","in":"query","required":false,"schema":{"anyOf":[{"type":"string","minLength":2,"maxLength":2},{"type":"null"}],"title":"Country"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/bulk":{"post":{"summary":"Bulk Lookup","description":"Resolve up to 100 addresses in one round trip: {\"ips\": [\"1.1.1.1\", ...]}","operationId":"bulk_lookup_v1_bulk_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/stats":{"get":{"summary":"Dataset Stats","description":"What the dataset actually contains — the numbers behind every answer.","operationId":"dataset_stats_v1_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/domain/{domain}/registration":{"get":{"summary":"Domain Registration","description":"Registrar, creation and expiry dates via RDAP.","operationId":"domain_registration_v1_domain__domain__registration_get","parameters":[{"name":"domain","in":"path","required":true,"schema":{"type":"string","title":"Domain"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/rpki/{prefix}":{"get":{"summary":"Rpki State","description":"Validate an announcement: /v1/rpki/1.1.1.0/24?asn=13335","operationId":"rpki_state_v1_rpki__prefix__get","parameters":[{"name":"prefix","in":"path","required":true,"schema":{"type":"string","title":"Prefix"}},{"name":"asn","in":"query","required":true,"schema":{"type":"string","description":"origin AS, e.g. 13335 or AS13335","title":"Asn"},"description":"origin AS, e.g. 13335 or AS13335"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/asn/{asn}/peering":{"get":{"summary":"Asn Peering","description":"Where a network interconnects: exchanges, capacity, peering policy.","operationId":"asn_peering_v1_asn__asn__peering_get","parameters":[{"name":"asn","in":"path","required":true,"schema":{"type":"string","title":"Asn"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/rpki-stats":{"get":{"summary":"Rpki Stats","description":"Coverage of the ROA set currently loaded.","operationId":"rpki_stats_v1_rpki_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}