{"openapi":"3.1.0","info":{"title":"Senapati API","description":"IP/domain/URL/email reputation and threat-intelligence API.","version":"0.3.0"},"paths":{"/":{"get":{"tags":["Root"],"summary":"Service banner","description":"Return a small service banner identifying the API.","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_ServiceBanner_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}}}}},"/api/health":{"get":{"tags":["Health"],"summary":"Health Check","description":"Returns the health status of the API service.","operationId":"healthcheck_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_HealthCheckData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}}}}},"/api/account/subscription":{"get":{"tags":["Account"],"summary":"Get plan, credit balance and renewal dates","description":"Plan, credits left and when they refill, and when the paid term ends.\n\nFree to call (no credits). Takes an API key or a dashboard session.","operationId":"get_subscription_api_account_subscription_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_SubscriptionData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"401":{"description":"Invalid or missing credentials"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/check-ip":{"post":{"tags":["Reputation"],"summary":"Check IP reputation","description":"Check an IP against the blacklist engines with full enrichment (1 credit).","operationId":"check_ip_api_check_ip_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IPRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_IPReputationResponse_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"401":{"description":"Invalid or missing credentials"},"402":{"description":"Insufficient credits"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/domain-reputation":{"post":{"tags":["Reputation"],"summary":"Check domain reputation","description":"Full domain reputation report (1 credit).","operationId":"domain_reputation_api_domain_reputation_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_DomainReputationData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"401":{"description":"Invalid or missing credentials"},"402":{"description":"Insufficient credits"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/url-reputation":{"post":{"tags":["Reputation"],"summary":"Check URL reputation","description":"Full URL reputation report (2 credits).","operationId":"url_reputation_api_url_reputation_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/URLRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_URLReputationData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"401":{"description":"Invalid or missing credentials"},"402":{"description":"Insufficient credits"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/email-reputation":{"post":{"tags":["Reputation"],"summary":"Check email reputation","description":"Email validation and reputation report (1 credit).","operationId":"email_reputation_api_email_reputation_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_EmailReputationData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"401":{"description":"Invalid or missing credentials"},"402":{"description":"Insufficient credits"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/dns-lookup":{"post":{"tags":["Reputation"],"summary":"DNS record lookup","description":"Query DNS records for a domain (1 credit).","operationId":"dns_lookup_api_dns_lookup_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DNSLookupRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_DNSLookupData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"401":{"description":"Invalid or missing credentials"},"402":{"description":"Insufficient credits"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/whois-lookup":{"post":{"tags":["Reputation"],"summary":"WHOIS lookup for a domain, IP address, CIDR range or AS number","description":"Look up registration details (1 credit). `type` names the payload shape.","operationId":"whois_lookup_api_whois_lookup_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhoisRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_Union_WhoisData__WhoisIPData__WhoisASNData__"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"401":{"description":"Invalid or missing credentials"},"402":{"description":"Insufficient credits"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/bulk/check-ip":{"post":{"tags":["Bulk Lookups"],"summary":"Bulk Check Ip","description":"Check up to 100 IP addresses (1 credit each).","operationId":"bulk_check_ip_api_bulk_check_ip_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkIPRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_BulkData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"401":{"description":"Invalid or missing credentials"},"402":{"description":"Insufficient credits"},"422":{"description":"Validation error (e.g. >100 items)"}}}},"/api/bulk/domain-reputation":{"post":{"tags":["Bulk Lookups"],"summary":"Bulk Domain","description":"Check up to 100 domains (1 credit each).","operationId":"bulk_domain_api_bulk_domain_reputation_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDomainRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_BulkData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"401":{"description":"Invalid or missing credentials"},"402":{"description":"Insufficient credits"},"422":{"description":"Validation error (e.g. >100 items)"}}}},"/api/bulk/url-reputation":{"post":{"tags":["Bulk Lookups"],"summary":"Bulk Url","description":"Check up to 100 URLs (2 credits each).","operationId":"bulk_url_api_bulk_url_reputation_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkURLRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_BulkData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"401":{"description":"Invalid or missing credentials"},"402":{"description":"Insufficient credits"},"422":{"description":"Validation error (e.g. >100 items)"}}}},"/api/bulk/email-reputation":{"post":{"tags":["Bulk Lookups"],"summary":"Bulk Email","description":"Check up to 100 emails (1 credit each).","operationId":"bulk_email_api_bulk_email_reputation_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkEmailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_BulkData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"401":{"description":"Invalid or missing credentials"},"402":{"description":"Insufficient credits"},"422":{"description":"Validation error (e.g. >100 items)"}}}},"/api/bulk/dns-lookup":{"post":{"tags":["Bulk Lookups"],"summary":"Bulk Dns","description":"Look up DNS records for up to 100 domains (1 credit each).","operationId":"bulk_dns_api_bulk_dns_lookup_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"x-api-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Api-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDNSRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_BulkData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"401":{"description":"Invalid or missing credentials"},"402":{"description":"Insufficient credits"},"422":{"description":"Validation error (e.g. >100 items)"}}}},"/api/free/check-ip":{"post":{"tags":["Free Tools"],"summary":"Free Check Ip","description":"Quick IP blacklist check with reduced output (no auth).","operationId":"free_check_ip_api_free_check_ip_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeIPRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_FreeIPData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/free/domain-check":{"post":{"tags":["Free Tools"],"summary":"Free Domain Check","description":"Quick domain blacklist check with reduced output (no auth).","operationId":"free_domain_check_api_free_domain_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeDomainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_FreeDomainData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/free/dns-lookup":{"post":{"tags":["Free Tools"],"summary":"Free Dns Lookup","description":"Quick DNS lookup returning up to five records (no auth).","operationId":"free_dns_lookup_api_free_dns_lookup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeDNSRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_FreeDNSData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/free/email-check":{"post":{"tags":["Free Tools"],"summary":"Free Email Check","description":"Quick email validation check with reduced output (no auth).","operationId":"free_email_check_api_free_email_check_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_FreeEmailData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/free/whois-lookup":{"post":{"tags":["Free Tools"],"summary":"Free Whois Lookup","description":"Quick WHOIS lookup with reduced output (no auth).","operationId":"free_whois_lookup_api_free_whois_lookup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeWhoisRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/APISingleResponse_FreeWhoisData_"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SenapatiErrorResponse"}}}},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"APISingleResponse_BulkData_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/BulkData","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[BulkData]"},"APISingleResponse_DNSLookupData_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/DNSLookupData","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[DNSLookupData]"},"APISingleResponse_DomainReputationData_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/DomainReputationData","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[DomainReputationData]"},"APISingleResponse_EmailReputationData_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/EmailReputationData","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[EmailReputationData]"},"APISingleResponse_FreeDNSData_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/FreeDNSData","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[FreeDNSData]"},"APISingleResponse_FreeDomainData_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/FreeDomainData","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[FreeDomainData]"},"APISingleResponse_FreeEmailData_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/FreeEmailData","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[FreeEmailData]"},"APISingleResponse_FreeIPData_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/FreeIPData","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[FreeIPData]"},"APISingleResponse_FreeWhoisData_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/FreeWhoisData","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[FreeWhoisData]"},"APISingleResponse_HealthCheckData_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/HealthCheckData","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[HealthCheckData]"},"APISingleResponse_IPReputationResponse_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/IPReputationResponse","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[IPReputationResponse]"},"APISingleResponse_ServiceBanner_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/ServiceBanner","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[ServiceBanner]"},"APISingleResponse_SubscriptionData_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/SubscriptionData","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[SubscriptionData]"},"APISingleResponse_URLReputationData_":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"$ref":"#/components/schemas/URLReputationData","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[URLReputationData]"},"APISingleResponse_Union_WhoisData__WhoisIPData__WhoisASNData__":{"properties":{"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]},"timestamp":{"type":"string","title":"Timestamp","description":"Response generation timestamp (ISO 8601)"},"data":{"anyOf":[{"$ref":"#/components/schemas/WhoisData"},{"$ref":"#/components/schemas/WhoisIPData"},{"$ref":"#/components/schemas/WhoisASNData"}],"title":"Data","description":"Response payload data"}},"type":"object","required":["data"],"title":"APISingleResponse[Union[WhoisData, WhoisIPData, WhoisASNData]]"},"ASNResponse":{"properties":{"asn":{"type":"string","title":"Asn","default":""},"asname":{"type":"string","title":"Asname","default":""},"route":{"type":"string","title":"Route","default":""},"status":{"type":"string","title":"Status","default":""},"org":{"type":"string","title":"Org","default":""},"country_code":{"type":"string","title":"Country Code","default":""},"created":{"type":"string","title":"Created","default":""},"days_since_created":{"type":"integer","title":"Days Since Created","default":0},"updated":{"type":"string","title":"Updated","default":""},"days_since_updated":{"type":"integer","title":"Days Since Updated","default":0},"address":{"type":"string","title":"Address","default":""},"abuse_email":{"type":"string","title":"Abuse Email","default":""},"domain":{"type":"string","title":"Domain","default":""},"total_ipv4_prefixes":{"type":"integer","title":"Total Ipv4 Prefixes","default":0},"total_ipv4_ips":{"type":"integer","title":"Total Ipv4 Ips","default":0},"total_ipv6_prefixes":{"type":"integer","title":"Total Ipv6 Prefixes","default":0},"type":{"type":"string","title":"Type","default":""},"rir":{"type":"string","title":"Rir","default":""}},"type":"object","title":"ASNResponse","description":"ASN information"},"AnonymityResponse":{"properties":{"is_proxy":{"type":"boolean","title":"Is Proxy","default":false},"is_webproxy":{"type":"boolean","title":"Is Webproxy","default":false},"is_residential_proxy":{"type":"boolean","title":"Is Residential Proxy","default":false},"is_vpn":{"type":"boolean","title":"Is Vpn","default":false},"is_hosting":{"type":"boolean","title":"Is Hosting","default":false},"is_relay":{"type":"boolean","title":"Is Relay","default":false},"is_tor":{"type":"boolean","title":"Is Tor","default":false}},"type":"object","title":"AnonymityResponse","description":"Anonymity detection results"},"BlacklistsResponse":{"properties":{"engines":{"additionalProperties":{"$ref":"#/components/schemas/EngineResult"},"type":"object","title":"Engines"},"detections":{"type":"integer","title":"Detections"},"engines_count":{"type":"integer","title":"Engines Count"},"detection_rate":{"type":"string","title":"Detection Rate"},"scan_time_ms":{"type":"integer","title":"Scan Time Ms"}},"type":"object","required":["engines","detections","engines_count","detection_rate","scan_time_ms"],"title":"BlacklistsResponse","description":"Blacklists check response"},"BulkDNSRequest":{"properties":{"domains":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Domains"},"record_type":{"type":"string","title":"Record Type","description":"DNS record type","default":"ALL"}},"type":"object","required":["domains"],"title":"BulkDNSRequest","description":"Bulk DNS request (max 100)."},"BulkData":{"properties":{"product":{"type":"string","title":"Product"},"total_items":{"type":"integer","title":"Total Items"},"successful":{"type":"integer","title":"Successful"},"failed":{"type":"integer","title":"Failed"},"credits_charged":{"type":"integer","title":"Credits Charged"},"results":{"items":{"$ref":"#/components/schemas/BulkResultItem"},"type":"array","title":"Results"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms"}},"type":"object","required":["product","total_items","successful","failed","credits_charged","results","elapsed_ms"],"title":"BulkData","description":"Bulk response payload."},"BulkDomainRequest":{"properties":{"domains":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Domains"}},"type":"object","required":["domains"],"title":"BulkDomainRequest","description":"Bulk domain request (max 100)."},"BulkEmailRequest":{"properties":{"emails":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Emails"}},"type":"object","required":["emails"],"title":"BulkEmailRequest","description":"Bulk email request (max 100)."},"BulkIPRequest":{"properties":{"ips":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Ips"}},"type":"object","required":["ips"],"title":"BulkIPRequest","description":"Bulk IP request (max 100)."},"BulkResultItem":{"properties":{"input":{"type":"string","title":"Input"},"status":{"type":"string","title":"Status","description":"'success' or 'error'"},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Result"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}},"type":"object","required":["input","status"],"title":"BulkResultItem","description":"Per-item bulk result."},"BulkURLRequest":{"properties":{"urls":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Urls"}},"type":"object","required":["urls"],"title":"BulkURLRequest","description":"Bulk URL request (max 100)."},"DNSLookupData":{"properties":{"domain":{"type":"string","title":"Domain"},"records":{"additionalProperties":true,"type":"object","title":"Records"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms","default":0}},"type":"object","required":["domain"],"title":"DNSLookupData","description":"DNS lookup payload."},"DNSLookupRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain name to query"},"record_type":{"type":"string","title":"Record Type","description":"Record type(s) or ALL","default":"ALL"}},"type":"object","required":["domain"],"title":"DNSLookupRequest","description":"Payload for a DNS record lookup."},"DomainReputationData":{"properties":{"domain":{"type":"string","title":"Domain"},"blacklists":{"additionalProperties":true,"type":"object","title":"Blacklists"},"dns":{"additionalProperties":true,"type":"object","title":"Dns"},"whois":{"additionalProperties":true,"type":"object","title":"Whois"},"ssl":{"additionalProperties":true,"type":"object","title":"Ssl"},"risk_score":{"additionalProperties":true,"type":"object","title":"Risk Score"},"sia_enrichment":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Sia Enrichment"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms","default":0}},"type":"object","required":["domain"],"title":"DomainReputationData","description":"Domain reputation report payload."},"DomainRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain name to check (e.g. example.com)"}},"type":"object","required":["domain"],"title":"DomainRequest","description":"Payload to check a single domain."},"EmailReputationData":{"properties":{"email":{"type":"string","title":"Email"},"is_valid_format":{"type":"boolean","title":"Is Valid Format","default":false},"is_disposable":{"type":"boolean","title":"Is Disposable","default":false},"is_free_provider":{"type":"boolean","title":"Is Free Provider","default":false},"has_mx_records":{"type":"boolean","title":"Has Mx Records","default":false},"mx_records":{"items":{"type":"string"},"type":"array","title":"Mx Records"},"domain":{"type":"string","title":"Domain","default":""},"domain_age_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domain Age Days"}},"type":"object","required":["email"],"title":"EmailReputationData","description":"Email reputation report payload."},"EmailRequest":{"properties":{"email":{"type":"string","title":"Email","description":"Email address to check"}},"type":"object","required":["email"],"title":"EmailRequest","description":"Payload to check a single email address."},"EngineResult":{"properties":{"name":{"type":"string","title":"Name"},"detected":{"type":"boolean","title":"Detected"},"reference":{"type":"string","title":"Reference"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms","default":0}},"type":"object","required":["name","detected","reference"],"title":"EngineResult","description":"Result from a single blacklist engine"},"ErrorDetail":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code (e.g. USER_NOT_FOUND)","examples":["USER_NOT_FOUND"]},"message":{"type":"string","title":"Message","description":"Human-readable error description","examples":["User with id '123' not found"]},"field":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Field","description":"The request field that caused the error, if applicable","examples":["email"]},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Details","description":"Additional context about the error"}},"type":"object","required":["code","message"],"title":"ErrorDetail","description":"A single error entry within an error response.\n\nEvery error carries a machine-readable ``code`` and a human-readable\n``message``. ``field`` and ``details`` are optional context."},"FreeAnonymity":{"properties":{"is_proxy":{"type":"boolean","title":"Is Proxy","default":false},"is_residential_proxy":{"type":"boolean","title":"Is Residential Proxy","default":false},"is_hosting":{"type":"boolean","title":"Is Hosting","default":false},"is_vpn":{"type":"boolean","title":"Is Vpn","default":false},"is_tor":{"type":"boolean","title":"Is Tor","default":false},"is_webproxy":{"type":"boolean","title":"Is Webproxy","default":false},"is_relay":{"type":"boolean","title":"Is Relay","default":false}},"type":"object","title":"FreeAnonymity","description":"Anonymous-connection flags shown on the free IP report."},"FreeDNSData":{"properties":{"domain":{"type":"string","title":"Domain"},"record_type":{"type":"string","title":"Record Type"},"records":{"items":{},"type":"array","title":"Records"},"message":{"type":"string","title":"Message"}},"type":"object","required":["domain","record_type","message"],"title":"FreeDNSData","description":"Reduced free-tier DNS lookup result."},"FreeDNSRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain name to query"},"record_type":{"type":"string","title":"Record Type","description":"DNS record type","default":"A"}},"type":"object","required":["domain"],"title":"FreeDNSRequest","description":"Payload for a free DNS lookup."},"FreeDomainData":{"properties":{"domain":{"type":"string","title":"Domain"},"blacklisted":{"type":"boolean","title":"Blacklisted"},"detections":{"type":"integer","title":"Detections"},"engines_count":{"type":"integer","title":"Engines Count"},"domain_age_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domain Age Days"},"message":{"type":"string","title":"Message"}},"type":"object","required":["domain","blacklisted","detections","engines_count","message"],"title":"FreeDomainData","description":"Reduced free-tier domain check result."},"FreeDomainRequest":{"properties":{"domain":{"type":"string","title":"Domain","description":"Domain name to check"}},"type":"object","required":["domain"],"title":"FreeDomainRequest","description":"Payload for a free domain check."},"FreeEmailData":{"properties":{"email":{"type":"string","title":"Email"},"is_valid_format":{"type":"boolean","title":"Is Valid Format"},"is_disposable":{"type":"boolean","title":"Is Disposable"},"is_free_provider":{"type":"boolean","title":"Is Free Provider"},"message":{"type":"string","title":"Message"}},"type":"object","required":["email","is_valid_format","is_disposable","is_free_provider","message"],"title":"FreeEmailData","description":"Reduced free-tier email check result."},"FreeEmailRequest":{"properties":{"email":{"type":"string","title":"Email","description":"Email address to check"}},"type":"object","required":["email"],"title":"FreeEmailRequest","description":"Payload for a free email check."},"FreeEngineResult":{"properties":{"name":{"type":"string","title":"Name"},"detected":{"type":"boolean","title":"Detected"},"reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reference","description":"The engine's public website"}},"type":"object","required":["name","detected"],"title":"FreeEngineResult","description":"One blacklist engine's verdict on the free IP report."},"FreeIPData":{"properties":{"ip":{"type":"string","title":"Ip"},"detections":{"type":"integer","title":"Detections"},"engines_count":{"type":"integer","title":"Engines Count"},"detection_rate":{"type":"string","title":"Detection Rate"},"reverse_dns":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reverse Dns"},"isp":{"type":"string","title":"Isp","default":""},"asn":{"type":"string","title":"Asn","default":""},"organization":{"type":"string","title":"Organization","default":""},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"region":{"type":"string","title":"Region","default":""},"city":{"type":"string","title":"City","default":""},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Longitude"},"anonymity":{"$ref":"#/components/schemas/FreeAnonymity"},"engines":{"items":{"$ref":"#/components/schemas/FreeEngineResult"},"type":"array","title":"Engines"},"risk_score":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Risk Score"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms","default":0},"message":{"type":"string","title":"Message"}},"type":"object","required":["ip","detections","engines_count","detection_rate","message"],"title":"FreeIPData","description":"Free-tier IP report: summary, anonymity flags, and per-engine verdicts.\n\nThe risk score, engine-health detail, and the wider information block\nstay on the authenticated ``/api/check-ip`` endpoint."},"FreeIPRequest":{"properties":{"ip":{"type":"string","title":"Ip","description":"IP address to check (IPv4 or IPv6)"}},"type":"object","required":["ip"],"title":"FreeIPRequest","description":"Payload for a free IP check."},"FreeWhoisData":{"properties":{"type":{"type":"string","enum":["domain","ip","asn"],"title":"Type","default":"domain"},"query":{"type":"string","title":"Query"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"},"registrar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrar"},"creation_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creation Date"},"domain_age_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domain Age Days"},"network":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Network"},"asn":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Asn"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name","description":"Network or AS name"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"lookup_status":{"anyOf":[{"type":"string","enum":["ok","not_found","error"]},{"type":"null"}],"title":"Lookup Status"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms","default":0},"message":{"type":"string","title":"Message"}},"type":"object","required":["query","message"],"title":"FreeWhoisData","description":"Reduced free-tier WHOIS result.\n\nDomains fill the registrar and date fields; IP networks and AS numbers\nfill the network / organisation ones."},"FreeWhoisRequest":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","description":"A domain, IP address, CIDR range or AS number"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Domain name. Older spelling of `query`."}},"type":"object","title":"FreeWhoisRequest","description":"Payload for a free WHOIS lookup."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthCheckData":{"properties":{"status":{"type":"string","title":"Status","description":"Overall service status","examples":["healthy"]},"service":{"type":"string","title":"Service","description":"Service name","examples":["Senapati API"]},"version":{"type":"string","title":"Version","description":"Service version","examples":["0.3.0"]},"database":{"type":"boolean","title":"Database","description":"Whether the database is reachable"}},"type":"object","required":["status","service","version","database"],"title":"HealthCheckData","description":"Health check response payload."},"IPReputationResponse":{"properties":{"ip":{"type":"string","title":"Ip"},"version":{"type":"string","title":"Version"},"blacklists":{"$ref":"#/components/schemas/BlacklistsResponse"},"information":{"$ref":"#/components/schemas/InformationResponse"},"asn":{"$ref":"#/components/schemas/ASNResponse"},"anonymity":{"$ref":"#/components/schemas/AnonymityResponse"},"risk_score":{"$ref":"#/components/schemas/RiskScoreResponse"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms"},"sia_enrichment":{"anyOf":[{"$ref":"#/components/schemas/SIAIPEnrichmentResponse"},{"type":"null"}]}},"type":"object","required":["ip","version","blacklists","information","asn","anonymity","risk_score","elapsed_ms"],"title":"IPReputationResponse","description":"Complete IP reputation response"},"IPRequest":{"properties":{"ip":{"type":"string","title":"Ip","description":"IP address to check (IPv4 or IPv6)"}},"type":"object","required":["ip"],"title":"IPRequest","description":"Payload to check a single IP address."},"InformationResponse":{"properties":{"reverse_dns":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reverse Dns"},"is_eu":{"type":"boolean","title":"Is Eu","default":false},"continent_code":{"type":"string","title":"Continent Code","default":""},"continent_name":{"type":"string","title":"Continent Name","default":""},"country_code":{"type":"string","title":"Country Code","default":""},"country_name":{"type":"string","title":"Country Name","default":""},"currency":{"type":"string","title":"Currency","default":""},"currency_name":{"type":"string","title":"Currency Name","default":""},"currency_name_plural":{"type":"string","title":"Currency Name Plural","default":""},"currency_symbol":{"type":"string","title":"Currency Symbol","default":""},"currency_symbol_native":{"type":"string","title":"Currency Symbol Native","default":""},"calling_code":{"type":"string","title":"Calling Code","default":""},"emoji_flag":{"type":"string","title":"Emoji Flag","default":""},"emoji_flag_unicode":{"type":"string","title":"Emoji Flag Unicode","default":""},"region_name":{"type":"string","title":"Region Name","default":""},"city_name":{"type":"string","title":"City Name","default":""},"latitude":{"type":"number","title":"Latitude","default":0.0},"longitude":{"type":"number","title":"Longitude","default":0.0},"isp":{"type":"string","title":"Isp","default":""},"asn":{"type":"string","title":"Asn","default":""},"is_bogon":{"type":"boolean","title":"Is Bogon","default":false},"is_spamhaus_drop":{"type":"boolean","title":"Is Spamhaus Drop","default":false},"is_fake_bot":{"type":"boolean","title":"Is Fake Bot","default":false},"is_google_bot":{"type":"boolean","title":"Is Google Bot","default":false},"is_search_engine_bot":{"type":"boolean","title":"Is Search Engine Bot","default":false},"related_service_name":{"type":"string","title":"Related Service Name","default":""},"related_service_domain":{"type":"string","title":"Related Service Domain","default":""},"related_service_type":{"type":"string","title":"Related Service Type","default":""},"is_major_provider_spf_ip":{"type":"boolean","title":"Is Major Provider Spf Ip","default":false},"is_public_dns":{"type":"boolean","title":"Is Public Dns","default":false},"cloud_provider":{"type":"string","title":"Cloud Provider","default":""},"cloud_provider_domain":{"type":"string","title":"Cloud Provider Domain","default":""},"aws_service":{"type":"string","title":"Aws Service","default":""},"is_google_service":{"type":"boolean","title":"Is Google Service","default":false},"edge_service":{"type":"string","title":"Edge Service","default":""},"edge_service_domain":{"type":"string","title":"Edge Service Domain","default":""},"is_satellite":{"type":"boolean","title":"Is Satellite","default":false},"is_hosting":{"type":"boolean","title":"Is Hosting","default":false}},"type":"object","title":"InformationResponse","description":"Geolocation and network information"},"RiskScoreResponse":{"properties":{"result":{"type":"integer","title":"Result"}},"type":"object","required":["result"],"title":"RiskScoreResponse","description":"Risk score calculation"},"SIAIPEnrichmentResponse":{"properties":{"listed":{"type":"boolean","title":"Listed"},"dataset":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dataset"},"botname":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Botname"},"detection":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detection"},"heuristic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Heuristic"},"rule":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Rule"},"listed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Listed At"},"valid_until":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Valid Until"},"seen_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seen Count"},"country_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country Code"},"asn":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Asn"}},"type":"object","required":["listed"],"title":"SIAIPEnrichmentResponse","description":"Spamhaus Intelligence API per-IP enrichment.\n\nPopulated when SPAMHAUS_SIA_USERNAME/PASSWORD are configured and\nthe lookup completes; omitted from the response otherwise. Goes\ndeeper than blacklist boolean verdicts: ``botname``, ``detection``\ntype, and heuristic tell the caller *what* the IP is doing."},"SenapatiErrorResponse":{"properties":{"errors":{"items":{"$ref":"#/components/schemas/ErrorDetail"},"type":"array","title":"Errors","description":"List of errors that occurred during request processing"},"request_id":{"anyOf":[{"type":"string"},{"type":"string","format":"uuid"},{"type":"null"}],"title":"Request Id","description":"Unique request identifier for tracing","examples":["550e8400-e29b-41d4-a716-446655440000"]}},"type":"object","required":["errors"],"title":"SenapatiErrorResponse","description":"Standardized error response returned by all API error paths."},"ServiceBanner":{"properties":{"service":{"type":"string","title":"Service","examples":["Senapati API"]},"version":{"type":"string","title":"Version","examples":["0.3.0"]},"docs":{"type":"string","title":"Docs","description":"Path to the interactive API docs"}},"type":"object","required":["service","version","docs"],"title":"ServiceBanner","description":"Basic service identification returned at the root path."},"SubscriptionData":{"properties":{"plan":{"type":"string","title":"Plan","description":"Plan name: Free, Starter, Pro or Enterprise"},"billing_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Status","description":"Status of the paid subscription as the billing provider reports it; null on the Free plan"},"credits_remaining":{"type":"integer","title":"Credits Remaining","description":"Credits left in the current cycle"},"credits_per_month":{"type":"integer","title":"Credits Per Month","description":"Credits the plan grants per cycle"},"credits_reset_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credits Reset At","description":"When the balance refills to credits_per_month (ISO 8601)"},"current_period_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Period End","description":"When the paid term ends or renews (ISO 8601); null on the Free plan"},"cancel_at_period_end":{"type":"boolean","title":"Cancel At Period End","description":"True when the subscription is cancelled and the plan ends at current_period_end","default":false},"rate_limit_per_second":{"type":"integer","title":"Rate Limit Per Second","description":"Requests per second allowed"},"max_api_keys":{"type":"integer","title":"Max Api Keys","description":"API keys the plan allows"}},"type":"object","required":["plan","credits_remaining","credits_per_month","rate_limit_per_second","max_api_keys"],"title":"SubscriptionData","description":"Plan, credit balance and renewal dates, for integrations to watch."},"URLReputationData":{"properties":{"url":{"type":"string","title":"Url"},"url_fetch_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url Fetch Status"},"report":{"additionalProperties":true,"type":"object","title":"Report"},"blacklists":{"additionalProperties":true,"type":"object","title":"Blacklists"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms","default":0}},"type":"object","required":["url"],"title":"URLReputationData","description":"URL reputation report payload."},"URLRequest":{"properties":{"url":{"type":"string","title":"Url","description":"Full URL to analyze"}},"type":"object","required":["url"],"title":"URLRequest","description":"Payload to check a single URL."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WhoisASNData":{"properties":{"query":{"type":"string","title":"Query"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Handle","description":"Registry handle"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization","description":"Organisation the resource is registered to"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"registry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registry","description":"Regional registry: arin, ripe, apnic, lacnic or afrinic"},"abuse_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abuse Email","description":"Where the holder accepts abuse reports"},"emails":{"items":{"type":"string"},"type":"array","title":"Emails"},"registration_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Date"},"updated_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated Date"},"status":{"items":{"type":"string"},"type":"array","title":"Status"},"terms_of_service_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Of Service Url"},"source":{"anyOf":[{"type":"string","const":"rdap"},{"type":"null"}],"title":"Source"},"lookup_status":{"anyOf":[{"type":"string","enum":["ok","not_found","error"]},{"type":"null"}],"title":"Lookup Status"},"fetched_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fetched At"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms","default":0},"type":{"type":"string","const":"asn","title":"Type","default":"asn"},"asn":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Asn"},"asn_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asn Name"},"asn_range":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Asn Range","description":"Set when the registry answered with a block of AS numbers"}},"type":"object","required":["query"],"title":"WhoisASNData","description":"WHOIS lookup payload for an autonomous system number."},"WhoisData":{"properties":{"type":{"type":"string","const":"domain","title":"Type","default":"domain"},"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","description":"The normalised query"},"domain":{"type":"string","title":"Domain"},"registered_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registered Domain","description":"The registration this record describes. Differs from `domain` when a host name below it was queried"},"registered":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Registered","description":"False when the registry says the domain is not registered"},"registrar":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrar"},"registrar_iana_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrar Iana Id"},"registrar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrar Url"},"registrar_abuse_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrar Abuse Email"},"registrar_abuse_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrar Abuse Phone"},"creation_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Creation Date"},"expiration_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Expiration Date"},"updated_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated Date"},"domain_age_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domain Age Days"},"domain_age_months":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domain Age Months","description":"Whole calendar months since creation"},"domain_age_years":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Domain Age Years"},"name_servers":{"items":{"type":"string"},"type":"array","title":"Name Servers"},"status":{"items":{"type":"string"},"type":"array","title":"Status"},"registrant_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrant Name"},"registrant_organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrant Organization"},"registrant_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrant State"},"registrant_country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrant Country"},"registrant_email_domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registrant Email Domain"},"registrant_email_is_free":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Registrant Email Is Free","description":"The registrant address is at a free mailbox provider"},"privacy_protected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Privacy Protected","description":"The registrant shown is a privacy or proxy service, or the registry redacted it"},"dnssec":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dnssec","description":"Delegation state as the registry records it: signedDelegation when it holds a DS record, else unsigned"},"dnssec_status":{"anyOf":[{"type":"string","enum":["secure","unsigned","zone_signed_no_ds","broken"]},{"type":"null"}],"title":"Dnssec Status","description":"What a validating resolver sees. secure: DS record present and the zone validates; unsigned: DNSSEC not in use; zone_signed_no_ds: the zone signs its records but no DS record links it to the registry, so it is not protected; broken: a DS record exists but validation fails, so validating resolvers cannot reach the domain; null: could not be determined"},"dnssec_zone_signed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Dnssec Zone Signed","description":"The zone publishes DNSKEY records"},"dnssec_checked_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dnssec Checked At","description":"When dnssec_status was last checked (refreshed hourly)"},"ds_records":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Ds Records","description":"DS records the registry holds: key_tag, algorithm, digest_type, digest"},"emails":{"items":{"type":"string"},"type":"array","title":"Emails"},"terms_of_service_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Of Service Url","description":"Terms the registry attaches to this data, when it links them"},"source":{"anyOf":[{"type":"string","enum":["rdap","whois"]},{"type":"null"}],"title":"Source","description":"Protocol that answered the lookup"},"lookup_status":{"anyOf":[{"type":"string","enum":["ok","not_found","error"]},{"type":"null"}],"title":"Lookup Status","description":"ok: the registry answered; not_found: the domain is not registered; error: no answer could be obtained"},"fetched_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fetched At","description":"When the registry was queried (ISO-8601)"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms","default":0}},"type":"object","required":["domain"],"title":"WhoisData","description":"WHOIS lookup payload for a domain."},"WhoisIPData":{"properties":{"query":{"type":"string","title":"Query"},"handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Handle","description":"Registry handle"},"organization":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organization","description":"Organisation the resource is registered to"},"country":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Country"},"registry":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registry","description":"Regional registry: arin, ripe, apnic, lacnic or afrinic"},"abuse_email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Abuse Email","description":"Where the holder accepts abuse reports"},"emails":{"items":{"type":"string"},"type":"array","title":"Emails"},"registration_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Registration Date"},"updated_date":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Updated Date"},"status":{"items":{"type":"string"},"type":"array","title":"Status"},"terms_of_service_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Terms Of Service Url"},"source":{"anyOf":[{"type":"string","const":"rdap"},{"type":"null"}],"title":"Source"},"lookup_status":{"anyOf":[{"type":"string","enum":["ok","not_found","error"]},{"type":"null"}],"title":"Lookup Status"},"fetched_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fetched At"},"elapsed_ms":{"type":"integer","title":"Elapsed Ms","default":0},"type":{"type":"string","const":"ip","title":"Type","default":"ip"},"network":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Network","description":"Most specific registered network containing the query"},"start_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Start Address"},"end_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"End Address"},"ip_version":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Ip Version"},"network_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Network Name"},"parent_handle":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Parent Handle"},"network_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Network Type","description":"Allocation type as the registry words it"}},"type":"object","required":["query"],"title":"WhoisIPData","description":"WHOIS lookup payload for an IP address or CIDR range."},"WhoisRequest":{"properties":{"query":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Query","description":"What to look up: a domain (example.com), an IP address, a CIDR range (8.8.8.0/24) or an AS number (AS15169)"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain","description":"Domain name to look up. Older spelling of `query`."}},"type":"object","title":"WhoisRequest","description":"Payload for a WHOIS lookup."}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}