{"openapi":"3.0.0","info":{"version":"3.0.0","title":"BGPKIT API","description":"\nBGPKIT API provides access to BGP data and tools offered by BGPKIT.\n\n[![BGPKIT Logo](https://raw.githubusercontent.com/bgpkit/assets/main/logos/wide-solid-200px.png)](https://bgpkit.com)\n","contact":{"name":"BGPKIT","url":"https://bgpkit.com","email":"contact@bgpkit.com"},"license":{"name":"MIT","url":"https://opensource.org/licenses/MIT"},"termsOfService":"https://bgpkit.com/terms"},"tags":[{"name":"BGPKIT Broker","description":"\nAccess BGP data from public route collector projects.\n\n**MRT files** (historical routing data):\n* RouteViews: https://archive.routeviews.org/\n* RIPE RIS: https://ris.ripe.net/docs/mrt/\n\n**BMP streams** (live BGP data via Kafka):\n* RouteViews Kafka broker: stream.routeviews.org:9092\n\nOpen-source SDKs for MRT data:\n* Rust: https://github.com/bgpkit/bgpkit-broker\n* Python: https://github.com/bgpkit/pybgpkit\n"},{"name":"BGPKIT Utils","description":"Network utilities for IP geolocation, ASN information, and BGP communities lookup."},{"name":"Metrics","description":"Prometheus-compatible metrics endpoint for monitoring API performance and health."}],"components":{"schemas":{"BrokerItem":{"type":"object","properties":{"ts_start":{"type":"string","description":"Starting timestamp of the MRT file"},"ts_end":{"type":"string","description":"Ending timestamp of the MRT file"},"collector_id":{"type":"string","description":"Route collector ID, e.g. rrc00, route-views2"},"data_type":{"type":"string","description":"Type of MRT file: updates or rib"},"url":{"type":"string","description":"Download URL of the MRT file"},"rough_size":{"type":"integer","minimum":0,"description":"Estimated size of the MRT file in bytes"},"exact_size":{"type":"integer","minimum":0,"description":"Exact size of the MRT file in bytes"}},"required":["ts_start","ts_end","collector_id","data_type","url","rough_size","exact_size"],"description":"BGPKIT Broker item schema"},"BrokerHealth":{"type":"object","properties":{"message":{"type":"string","description":"Health status message"},"meta":{"type":"object","properties":{"delay_secs":{"type":"integer","minimum":0,"description":"Delay in seconds since the latest update"},"latest_file_ts":{"type":"integer","minimum":0,"description":"Timestamp of the latest MRT file"}},"required":["delay_secs","latest_file_ts"],"description":"Health status metadata"},"backend":{"type":"string","description":"Backend platform name"},"status":{"type":"string","description":"Health status"}},"required":["message","meta","backend","status"],"description":"BGPKIT Broker service health information"},"IpInfo":{"type":"object","properties":{"ip":{"type":"string","description":"IP address"},"country":{"type":"string","description":"IP location's country code"},"asn":{"type":"object","properties":{"prefix":{"type":"string","description":"Longest prefix match for the IP"},"asn":{"type":"integer","description":"Origin autonomous system (AS) number"},"name":{"type":"string","description":"Origin AS name"},"country":{"type":"string","description":"Origin AS registration country"},"rpki":{"type":"string","description":"RPKI status"},"updatedAt":{"type":"string","description":"Last data updated time"}},"description":"Information for the network that covers the IP address"}},"description":"IP information"},"AsnInfo":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"asn":{"type":"number","description":"Autonomous System Number"},"name":{"type":"string","nullable":true,"description":"AS name"},"country":{"type":"string","nullable":true,"description":"ISO 3166-1 alpha-2 country code"},"country_name":{"type":"string","nullable":true,"description":"Full country name"},"as2org":{"type":"object","nullable":true,"properties":{"name":{"type":"string","description":"Organization name"},"country":{"type":"string","description":"Organization country"},"org_id":{"type":"string","description":"Organization ID"},"org_name":{"type":"string","description":"Organization full name"}},"required":["name","country","org_id","org_name"]},"population":{"type":"object","nullable":true,"properties":{"user_count":{"type":"number","description":"Estimated users"},"percent_country":{"type":"number","description":"Percentage of country internet users"},"percent_global":{"type":"number","description":"Percentage of global internet users"},"sample_count":{"type":"number","description":"Sample size for estimates"}},"required":["user_count","percent_country","percent_global","sample_count"]},"hegemony":{"type":"object","nullable":true,"properties":{"asn":{"type":"number","description":"AS number"},"ipv4":{"type":"number","description":"IPv4 hegemony score (0-1)"},"ipv6":{"type":"number","description":"IPv6 hegemony score (0-1)"}},"required":["asn","ipv4","ipv6"]},"peeringdb":{"type":"object","nullable":true,"properties":{"asn":{"type":"number","description":"AS number"},"name":{"type":"string","nullable":true,"description":"PeeringDB name"},"aka":{"type":"string","nullable":true,"description":"Also known as"},"name_long":{"type":"string","nullable":true,"description":"Long form name"},"irr_as_set":{"type":"string","nullable":true,"description":"IRR AS-SET"}},"required":["asn","name","aka","name_long","irr_as_set"]}},"required":["asn","name","country","country_name"]}},"count":{"type":"number","description":"Total number of results"},"page":{"type":"number","description":"Current page number"},"page_size":{"type":"number","description":"Results per page"},"updatedAt":{"type":"string","description":"Last update time"},"pagination":{"type":"object","properties":{"page":{"type":"number","description":"Current page"},"page_size":{"type":"number","description":"Results per page"},"total_pages":{"type":"number","description":"Total number of pages"},"total_count":{"type":"number","description":"Total result count"},"has_next":{"type":"boolean","description":"Whether there is a next page"},"has_prev":{"type":"boolean","description":"Whether there is a previous page"}},"required":["page","page_size","total_pages","total_count","has_next","has_prev"],"description":"Pagination metadata"}},"required":["data","count"],"description":"ASN information"}},"parameters":{}},"paths":{"/v3/metrics":{"get":{"tags":["Metrics"],"summary":"Prometheus metrics endpoint","description":"Returns Prometheus-compatible metrics for monitoring. Requires Bearer token authentication.","parameters":[{"schema":{"type":"string","description":"Bearer bgpkit_public"},"required":false,"description":"Bearer bgpkit_public","name":"authorization","in":"header"}],"responses":{"200":{"description":"Prometheus metrics","content":{"text/plain":{"schema":{"type":"string"}}}},"401":{"description":"Unauthorized - Bearer token required"}}}},"/v3/broker/latest":{"get":{"tags":["BGPKIT Broker"],"summary":"Get latest BGP MRT files","description":"Get the most recent BGP MRT files from all active RouteViews and RIPE RIS collectors. Includes delay metrics and download URLs.","responses":{"200":{"description":"Latest BGP MRT files with freshness metrics and download URLs","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":0},"data":{"type":"array","items":{"$ref":"#/components/schemas/BrokerItem"}}},"required":["count","data"]}}}}}}},"/v3/broker/health":{"get":{"tags":["BGPKIT Broker"],"summary":"Check broker health","description":"Check BGPKIT broker infrastructure status across deployments. Returns health metrics, uptime, and data freshness. Returns HTTP 500 if data is stale (>1 hour).","responses":{"200":{"description":"Infrastructure is healthy with fresh data"},"500":{"description":"Infrastructure issues or data staleness exceeds 1 hour","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrokerHealth"}}}}}}},"/v3/broker/search":{"get":{"tags":["BGPKIT Broker"],"summary":"Search BGP MRT files","description":"Search BGP MRT files from RouteViews and RIPE RIS collectors. Returns RIB files and routing updates with download URLs and metadata.","parameters":[{"schema":{"type":"integer","nullable":true,"minimum":0,"default":1,"description":"Page number (starts from 1)"},"required":false,"description":"Page number (starts from 1)","name":"page","in":"query"},{"schema":{"type":"integer","nullable":true,"minimum":0,"maximum":1000,"default":100,"description":"Results per page (1-1000, default: 100)"},"required":false,"description":"Results per page (1-1000, default: 100)","name":"page_size","in":"query"},{"schema":{"type":"string","description":"Start timestamp (ISO 8601, RFC3339, or Unix timestamp)"},"required":false,"description":"Start timestamp (ISO 8601, RFC3339, or Unix timestamp)","name":"ts_start","in":"query"},{"schema":{"type":"string","description":"End timestamp (same formats as ts_start)"},"required":false,"description":"End timestamp (same formats as ts_start)","name":"ts_end","in":"query"},{"schema":{"type":"string","description":"Data collection project: \"routeviews\" or \"riperis\""},"required":false,"description":"Data collection project: \"routeviews\" or \"riperis\"","name":"project","in":"query"},{"schema":{"type":"string","description":"Specific collector ID(s). Comma-separated for multiple collectors."},"required":false,"description":"Specific collector ID(s). Comma-separated for multiple collectors.","name":"collector_id","in":"query"},{"schema":{"type":"string","description":"Data type: \"rib\" (routing table snapshots) or \"updates\" (routing changes)"},"required":false,"description":"Data type: \"rib\" (routing table snapshots) or \"updates\" (routing changes)","name":"data_type","in":"query"}],"responses":{"200":{"description":"BGP MRT file search results with metadata and download URLs","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":0},"page":{"type":"integer","minimum":0},"page_size":{"type":"integer","minimum":0},"error":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/BrokerItem"}},"meta":{"type":"object","properties":{"latest_update_ts":{"type":"string"},"latest_update_duration":{"type":"number"},"backend":{"type":"string"},"query_delay":{"type":"number"}},"required":["latest_update_ts","latest_update_duration","backend","query_delay"]}},"required":["count","page","page_size","data","meta"]}}}}}}},"/v3/broker/peers":{"get":{"tags":["BGPKIT Broker"],"summary":"Get BGP peer information","description":"Get BGP peer statistics from RouteViews and RIPE RIS collectors including IPv4/IPv6 prefix counts, connected ASNs, and activity status.","parameters":[{"schema":{"type":"boolean","nullable":true,"default":false,"description":"Filter for full-feed peers only (>700K IPv4 or >100K IPv6 prefixes)"},"required":false,"description":"Filter for full-feed peers only (>700K IPv4 or >100K IPv6 prefixes)","name":"full_feed","in":"query"},{"schema":{"anyOf":[{"type":"string","format":"ip"},{"type":"string","format":"ip"}],"description":"Filter by specific peer IP address (IPv4 or IPv6)"},"required":false,"description":"Filter by specific peer IP address (IPv4 or IPv6)","name":"ip","in":"query"},{"schema":{"type":"integer","nullable":true,"minimum":0,"description":"Filter by Autonomous System Number"},"required":false,"description":"Filter by Autonomous System Number","name":"asn","in":"query"},{"schema":{"type":"string","description":"Filter by collector name(s). Comma-separated for multiple collectors."},"required":false,"description":"Filter by collector name(s). Comma-separated for multiple collectors.","name":"collector","in":"query"}],"responses":{"200":{"description":"BGP peer data with statistics and connectivity metrics","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":0},"data":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"collector":{"type":"string"},"ip":{"anyOf":[{"type":"string","format":"ip"},{"type":"string","format":"ip"}]},"asn":{"type":"integer","minimum":0},"num_v4_pfxs":{"type":"integer","minimum":0},"num_v6_pfxs":{"type":"integer","minimum":0},"num_connected_asns":{"type":"integer","minimum":0}},"required":["date","collector","ip","asn","num_v4_pfxs","num_v6_pfxs","num_connected_asns"]}}},"required":["count","data"]}}}}}}},"/v3/broker/collectors":{"get":{"tags":["BGPKIT Broker"],"summary":"Get MRT collector information","description":"Get metadata for public MRT route collectors from RouteViews and RIPE RIS projects.","parameters":[{"schema":{"type":"string","enum":["routeviews","riperis"],"description":"Filter by collector project"},"required":false,"description":"Filter by collector project","name":"project","in":"query"},{"schema":{"type":"string","description":"Filter by country code (e.g., 'US', 'DE', 'JP')"},"required":false,"description":"Filter by country code (e.g., 'US', 'DE', 'JP')","name":"country","in":"query"},{"schema":{"type":"boolean","nullable":true,"description":"Filter for active collectors only (not deactivated)"},"required":false,"description":"Filter for active collectors only (not deactivated)","name":"active","in":"query"}],"responses":{"200":{"description":"MRT collector metadata","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":0},"last_updated_at":{"type":"string","nullable":true,"description":"When the data was last updated"},"data":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Collector ID (e.g., 'rrc00', 'route-views2')"},"project":{"type":"string","enum":["routeviews","riperis"]},"data_url":{"type":"string","description":"Root URL for MRT data files"},"activated_on":{"type":"string","description":"ISO timestamp when collector was activated"},"deactivated_on":{"type":"string","nullable":true,"description":"ISO timestamp when collector was deactivated (null if still active)"},"country":{"type":"string","description":"Country code where collector is located"}},"required":["name","project","data_url","activated_on","deactivated_on","country"]}}},"required":["count","last_updated_at","data"]}}}}}}},"/v3/broker/events":{"get":{"tags":["BGPKIT Broker"],"summary":"SSE real-time events","description":"Stream real-time BGP data updates via Server-Sent Events (SSE). Receives notifications when new MRT files are available from RouteViews and RIPE RIS collectors.\n\n**Important:** This endpoint returns a 302 redirect to the Railway deployment to avoid Workers platform connection limits. Most SSE clients follow redirects automatically.\n\n**Event Format:**\n- `event`: 'new_file' - indicates a new BGP MRT file is available\n- `id`: The download URL of the file (also in data.url)\n- `data`: JSON object containing ts_start, ts_end, collector_id, data_type, url, rough_size, exact_size\n\n**Heartbeat:** Colon-only lines (`:`) are sent periodically to keep the connection alive.\n\n**Example:**\n```\nevent: new_file\nid: https://data.ris.ripe.net/rrc23/2026.03/updates.20260324.0240.gz\ndata: {\"ts_start\":\"2026-03-24T02:40:00\",\"ts_end\":\"2026-03-24T02:45:00\",\"collector_id\":\"rrc23\",\"data_type\":\"updates\",\"url\":\"https://data.ris.ripe.net/rrc23/2026.03/updates.20260324.0240.gz\",\"rough_size\":489472,\"exact_size\":0}\n```\n\n**Example Usage:**\n```javascript\nconst es = new EventSource('https://api.bgpkit.com/v3/broker/events?collector_id=rrc23');\nes.onmessage = (e) => {\n  const file = JSON.parse(e.data);\n  console.log('New file:', file.url, 'Size:', file.rough_size);\n};\n```","parameters":[{"schema":{"type":"string","description":"Filter events by collector ID(s). Comma-separated for multiple. Examples: 'rrc23', 'route-views.sg', 'rrc01,rrc02'"},"required":false,"description":"Filter events by collector ID(s). Comma-separated for multiple. Examples: 'rrc23', 'route-views.sg', 'rrc01,rrc02'","name":"collector_id","in":"query"},{"schema":{"type":"string","description":"Filter by data type: 'rib' or 'updates'"},"required":false,"description":"Filter by data type: 'rib' or 'updates'","name":"data_type","in":"query"},{"schema":{"type":"string","description":"Filter by project: 'routeviews' or 'riperis'"},"required":false,"description":"Filter by project: 'routeviews' or 'riperis'","name":"project","in":"query"}],"responses":{"302":{"description":"Redirect to Railway SSE endpoint","headers":{"Location":{"description":"Railway SSE endpoint URL","schema":{"type":"string"}}}},"500":{"description":"Failed to construct redirect URL","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/v3/utils/ip":{"get":{"tags":["BGPKIT Utils"],"summary":"IP address lookup","description":"Get geolocation and network information for IPv4/IPv6 addresses. Returns country, ASN ownership, BGP prefix, and RPKI status. Uses client IP if no address specified.","parameters":[{"schema":{"type":"string","description":"IP address to analyze (IPv4 or IPv6). Uses client IP if omitted."},"required":false,"description":"IP address to analyze (IPv4 or IPv6). Uses client IP if omitted.","name":"ip","in":"query"},{"schema":{"type":"boolean","nullable":true,"default":false,"description":"Return only IP and country (excludes ASN and BGP data)"},"required":false,"description":"Return only IP and country (excludes ASN and BGP data)","name":"simple","in":"query"}],"responses":{"200":{"description":"IP address information including geolocation, ASN, BGP prefix, and RPKI status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IpInfo"}}}}}}},"/v3/utils/asn":{"get":{"tags":["BGPKIT Utils"],"summary":"ASN information lookup","description":"Get ASN information including organization details, network metrics, geographic presence, and connectivity patterns. Supports single or multiple ASNs (comma-separated), filtering by country, and searching by name/organization.","parameters":[{"schema":{"type":"string","description":"ASN number(s) to lookup. Single or comma-separated multiple ASNs. Omit for paginated browsing or filtering."},"required":false,"description":"ASN number(s) to lookup. Single or comma-separated multiple ASNs. Omit for paginated browsing or filtering.","name":"asn","in":"query"},{"schema":{"type":"string","description":"Filter by country code (ISO 3166-1 alpha-2, e.g., US, DE, JP)"},"required":false,"description":"Filter by country code (ISO 3166-1 alpha-2, e.g., US, DE, JP)","name":"country","in":"query"},{"schema":{"type":"string","description":"Search by AS name or organization name (case-insensitive partial match)"},"required":false,"description":"Search by AS name or organization name (case-insensitive partial match)","name":"search","in":"query"},{"schema":{"type":"number","nullable":true,"description":"Page number for paginated results when browsing all ASNs"},"required":false,"description":"Page number for paginated results when browsing all ASNs","name":"page","in":"query"},{"schema":{"type":"number","nullable":true,"description":"Number of ASNs per page for pagination (max 10000)"},"required":false,"description":"Number of ASNs per page for pagination (max 10000)","name":"page_size","in":"query"}],"responses":{"200":{"description":"ASN information including organization, network metrics, and connectivity patterns","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsnInfo"}}}},"400":{"description":"Bad request - invalid ASN format"},"404":{"description":"ASN not found"},"429":{"description":"Rate limit exceeded"}}},"post":{"tags":["BGPKIT Utils"],"summary":"Bulk ASNs lookup","description":"Process up to 10,000 ASNs in a single batch request. More efficient than individual requests for large-scale analysis.","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"asns":{"type":"array","items":{"type":"number"},"minItems":1,"maxItems":10000,"description":"Array of ASN numbers to analyze (max 10,000 per request)"}},"required":["asns"]}}}},"responses":{"200":{"description":"Batch ASN analysis results with network information for all requested ASNs","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AsnInfo"}}}},"400":{"description":"Bad request - invalid input"}}}},"/v3/broker/streams":{"get":{"tags":["BGPKIT Broker"],"summary":"RouteViews Kafka streams","description":"List all available BGP stream topics from the RouteViews Kafka broker (stream.routeviews.org:9092), grouped by collector. Data is cached hourly in KV and fetched on-demand if the cache is empty.","parameters":[{"schema":{"type":"string","description":"Filter by broker collector_id (e.g. 'route-views.amsix') or stream_collector name (e.g. 'amsix'). Partial match supported."},"required":false,"description":"Filter by broker collector_id (e.g. 'route-views.amsix') or stream_collector name (e.g. 'amsix'). Partial match supported.","name":"collector","in":"query"}],"responses":{"200":{"description":"Collector stream groups","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":0},"meta":{"type":"object","properties":{"fetched_at":{"type":"string","description":"ISO timestamp of last Kafka metadata fetch"},"collector_count":{"type":"integer"},"topic_count":{"type":"integer"}},"required":["fetched_at","collector_count","topic_count"]},"data":{"type":"array","items":{"type":"object","properties":{"collector":{"type":"string","description":"Broker collector_id, or 'unknown.{stream_collector}' if unmapped"},"stream_collector":{"type":"string","description":"Kafka topic prefix (RouteViews stream name)"},"wildcard_topic":{"type":"string","description":"Wildcard topic pattern for subscribing to all peers"},"topics":{"type":"array","items":{"type":"string"},"description":"Individual peer topics under this collector"}},"required":["collector","stream_collector","wildcard_topic","topics"]}}},"required":["count","meta","data"]}}}},"500":{"description":"Failed to fetch stream data","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]}}}}}}},"/v3/communities":{"get":{"tags":["BGPKIT Utils"],"summary":"Query BGP communities","description":"Query communities by ASN, specific community value, or filters. Supports pagination with default 10 ASNs per page, max 1000.","parameters":[{"schema":{"type":"string","description":"Filter by ASN number","example":"174"},"required":false,"description":"Filter by ASN number","name":"asn","in":"query"},{"schema":{"type":"string","description":"Specific community value to lookup (e.g., 174:21000 or 174:20xxx)","example":"174:21000"},"required":false,"description":"Specific community value to lookup (e.g., 174:21000 or 174:20xxx)","name":"value","in":"query"},{"schema":{"type":"string","description":"Filter by description text (partial match)","example":"blackhole"},"required":false,"description":"Filter by description text (partial match)","name":"description","in":"query"},{"schema":{"type":"string","description":"Filter by AS organization name (partial match)","example":"Cogent"},"required":false,"description":"Filter by AS organization name (partial match)","name":"as_name","in":"query"},{"schema":{"type":"string","description":"Filter by country code (ISO 3166-1 alpha-2)","example":"US"},"required":false,"description":"Filter by country code (ISO 3166-1 alpha-2)","name":"country","in":"query"},{"schema":{"type":"string","description":"Page number (0-indexed, default: 0)","example":"0"},"required":false,"description":"Page number (0-indexed, default: 0)","name":"page","in":"query"},{"schema":{"type":"string","description":"Items per page (default: 10, max: 1000)","example":"10"},"required":false,"description":"Items per page (default: 10, max: 1000)","name":"page_size","in":"query"}],"responses":{"200":{"description":"Communities data with pagination","content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"object","properties":{"asn":{"type":"string"},"value":{"type":"string"},"description":{"type":"string"},"as_name":{"type":"string"},"country":{"type":"string"},"page":{"type":"number"},"page_size":{"type":"number"}},"required":["page","page_size"]},"pagination":{"type":"object","properties":{"page":{"type":"number"},"page_size":{"type":"number"},"total_pages":{"type":"number"},"total_count":{"type":"number"},"has_next":{"type":"boolean"},"has_prev":{"type":"boolean"}},"required":["page","page_size","total_pages","total_count","has_next","has_prev"]},"total_asns":{"type":"number"},"total_communities":{"type":"number"},"total_communities_all":{"type":"number"},"meta":{"type":"object","properties":{"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"last_updated":{"type":"string"}},"required":["id","name","url","last_updated"]}}},"required":["sources"]},"data":{"type":"array","items":{"type":"object","properties":{"asn":{"type":"number"},"name":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"source":{"type":"string"},"communities":{"type":"array","items":{"type":"object","properties":{"community":{"type":"string"},"source":{"type":"string"},"description":{"type":"string"},"range":{"type":"object","nullable":true,"properties":{"start":{"type":"number"},"end":{"type":"number"}},"required":["start","end"]}},"required":["community","source","description","range"]}}},"required":["asn","name","country","source","communities"]}}},"required":["query","pagination","total_asns","total_communities","total_communities_all","meta","data"]}}}},"400":{"description":"Invalid query parameters"}}}},"/v3/communities/sources":{"get":{"tags":["BGPKIT Utils"],"summary":"List community data sources","description":"Get information about all configured data sources","responses":{"200":{"description":"List of sources","content":{"application/json":{"schema":{"type":"object","properties":{"sources":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"last_updated":{"type":"string"},"stats":{"type":"object","properties":{"total_asns":{"type":"number"},"total_communities":{"type":"number"},"total_wildcards":{"type":"number"}},"required":["total_asns","total_communities","total_wildcards"]}},"required":["id","name","url","last_updated","stats"]}}},"required":["sources"]}}}}}}}}}