{"openapi":"3.1.0","info":{"title":"IranBlock public API","version":"1","description":"Internet censorship, shutdowns and throttling in Iran: the signals IranBlock reads, each against its own baseline, and the events they add up to. No key, no authentication. Timestamps are UTC ISO-8601; percentages are 0–100. Notes for readers and agents: /llms-full.txt.","contact":{"name":"IranBlock","email":"info@iranblock.com","url":"https://iranblock.com"}},"servers":[{"url":"https://iranblock.com"}],"tags":[{"name":"reference","description":"API reference — OpenAPI 3.1"},{"name":"observatory","description":"Access briefing and evidence. Parameters across the group: days, source, since, until, asn, domain."},{"name":"google","description":"Google traffic — Transparency Report. Parameters across the group: products, from, to."},{"name":"live","description":"Live check from inside Iran. Parameters across the group: target, asn."},{"name":"apnic","description":"APNIC — ISP address-space share"},{"name":"arvancloud","description":"ArvanCloud monitoring"},{"name":"baseline","description":"Baselines — every reading against its own 30-day median"},{"name":"bgptools","description":"BGP.tools prefixes"},{"name":"blocklists","description":"Published blocklists and the open lookup (dated snapshots, not live). Parameters across the group: q, domain, ip, asn, limit."},{"name":"cloudflare","description":"Cloudflare Radar. Parameters across the group: days, metric."},{"name":"connectivity","description":"Direct connectivity probes. Parameters across the group: hours, service, days."},{"name":"disruptions","description":"Disruption patterns. Parameters across the group: days, limit."},{"name":"dpi","description":"DPI & throttling"},{"name":"exports","description":"Bulk exports. Parameters across the group: days, metric."},{"name":"events","description":"Events — corroborated, derived from the signals. Parameters across the group: days."},{"name":"freedom","description":"Internet freedom scores"},{"name":"ihr","description":"IHR — internet chokepoints"},{"name":"incidents","description":"Incidents. Parameters across the group: before, day, days, limit, offset, source, type."},{"name":"ioda","description":"IODA outage signals"},{"name":"isp","description":"ISP monitoring"},{"name":"mobile","description":"Mobile carriers & eSIM"},{"name":"ooni","description":"OONI measurements. Parameters across the group: category, days, limit, test."},{"name":"overview","description":"Dashboard overview"},{"name":"protocols","description":"Circumvention protocols"},{"name":"reports","description":"Monthly reports"},{"name":"resources","description":"Resources"},{"name":"routing","description":"BGP routing. Parameters across the group: days, hours, prefix."},{"name":"snapshot","description":"Daily snapshot — canonical JSON with SHA-256"},{"name":"status","description":"Live status & source freshness"},{"name":"tor","description":"Tor network usage"}],"paths":{"/api/v1/openapi.json":{"get":{"operationId":"openapiJson","tags":["reference"],"summary":"API reference — OpenAPI 3.1","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/briefing":{"get":{"operationId":"briefing","tags":["observatory"],"summary":"Access briefing and evidence","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/lanes":{"get":{"operationId":"lanes","tags":["observatory"],"summary":"Access briefing and evidence","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"string"},"example":"90"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/destination":{"get":{"operationId":"destination","tags":["observatory"],"summary":"Access briefing and evidence","parameters":[{"name":"domain","in":"query","required":false,"schema":{"type":"string"},"example":"telegram.org"},{"name":"days","in":"query","required":false,"schema":{"type":"string"},"example":"30"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/networks":{"get":{"operationId":"networks","tags":["observatory"],"summary":"Access briefing and evidence","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"string"},"example":"7"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/performance":{"get":{"operationId":"performance","tags":["observatory"],"summary":"Access briefing and evidence","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/context":{"get":{"operationId":"context","tags":["observatory"],"summary":"Access briefing and evidence","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/outcomes":{"get":{"operationId":"outcomes","tags":["observatory"],"summary":"Access briefing and evidence","parameters":[{"name":"source","in":"query","required":false,"schema":{"type":"string"},"example":"cp:HTTPS"},{"name":"days","in":"query","required":false,"schema":{"type":"string"},"example":"30"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/atlas":{"get":{"operationId":"atlas","tags":["observatory"],"summary":"Access briefing and evidence","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/google":{"get":{"operationId":"google","tags":["google"],"summary":"Google traffic — Transparency Report","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/google/traffic":{"get":{"operationId":"googleTraffic","tags":["google"],"summary":"Google traffic — Transparency Report","parameters":[{"name":"products","in":"query","required":false,"schema":{"type":"string"},"example":"19,6,21"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/google/daily":{"get":{"operationId":"googleDaily","tags":["google"],"summary":"Google traffic — Transparency Report","parameters":[{"name":"from","in":"query","required":false,"schema":{"type":"string"},"example":"2019-11-01"},{"name":"to","in":"query","required":false,"schema":{"type":"string"},"example":"2019-11-30"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/google/episodes":{"get":{"operationId":"googleEpisodes","tags":["google"],"summary":"Google traffic — Transparency Report","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/live/exits":{"get":{"operationId":"liveExits","tags":["live"],"summary":"Live check from inside Iran","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/live/probe":{"get":{"operationId":"liveProbe","tags":["live"],"summary":"Live check from inside Iran","parameters":[{"name":"target","in":"query","required":false,"schema":{"type":"string"},"example":"www.iranintl.com"},{"name":"asn","in":"query","required":false,"schema":{"type":"string"},"example":"44244"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/live/session":{"get":{"operationId":"liveSession","tags":["live"],"summary":"Live check from inside Iran","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/apnic/isp-share":{"get":{"operationId":"apnicIspShare","tags":["apnic"],"summary":"APNIC — ISP address-space share","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/arvancloud/latest":{"get":{"operationId":"arvancloudLatest","tags":["arvancloud"],"summary":"ArvanCloud monitoring","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/arvancloud/monitoring":{"get":{"operationId":"arvancloudMonitoring","tags":["arvancloud"],"summary":"ArvanCloud monitoring","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/baseline":{"get":{"operationId":"baseline","tags":["baseline"],"summary":"Baselines — every reading against its own 30-day median","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/bgptools/prefixes":{"get":{"operationId":"bgptoolsPrefixes","tags":["bgptools"],"summary":"BGP.tools prefixes","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/bgptools/history":{"get":{"operationId":"bgptoolsHistory","tags":["bgptools"],"summary":"BGP.tools prefixes","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/blocklists/lookup":{"get":{"operationId":"blocklistsLookup","tags":["blocklists"],"summary":"Published blocklists and the open lookup (dated snapshots, not live)","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"example":"torproject.org"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/blocklists/sources":{"get":{"operationId":"blocklistsSources","tags":["blocklists"],"summary":"Published blocklists and the open lookup (dated snapshots, not live)","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/blocklists/categories":{"get":{"operationId":"blocklistsCategories","tags":["blocklists"],"summary":"Published blocklists and the open lookup (dated snapshots, not live)","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/blocklists/suffixes":{"get":{"operationId":"blocklistsSuffixes","tags":["blocklists"],"summary":"Published blocklists and the open lookup (dated snapshots, not live)","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/blocklists/asn-coverage":{"get":{"operationId":"blocklistsAsnCoverage","tags":["blocklists"],"summary":"Published blocklists and the open lookup (dated snapshots, not live)","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/blocklists/diff":{"get":{"operationId":"blocklistsDiff","tags":["blocklists"],"summary":"Published blocklists and the open lookup (dated snapshots, not live)","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/blocklists/index":{"get":{"operationId":"blocklistsIndex","tags":["blocklists"],"summary":"Published blocklists and the open lookup (dated snapshots, not live)","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/cloudflare/traffic":{"get":{"operationId":"cloudflareTraffic","tags":["cloudflare"],"summary":"Cloudflare Radar","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/cloudflare/quality":{"get":{"operationId":"cloudflareQuality","tags":["cloudflare"],"summary":"Cloudflare Radar","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/cloudflare/status":{"get":{"operationId":"cloudflareStatus","tags":["cloudflare"],"summary":"Cloudflare Radar","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/cloudflare/top-domains":{"get":{"operationId":"cloudflareTopDomains","tags":["cloudflare"],"summary":"Cloudflare Radar","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/connectivity/services":{"get":{"operationId":"connectivityServices","tags":["connectivity"],"summary":"Direct connectivity probes","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/connectivity/response-times":{"get":{"operationId":"connectivityResponseTimes","tags":["connectivity"],"summary":"Direct connectivity probes","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/connectivity/history":{"get":{"operationId":"connectivityHistory","tags":["connectivity"],"summary":"Direct connectivity probes","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/connectivity/ooni-history":{"get":{"operationId":"connectivityOoniHistory","tags":["connectivity"],"summary":"Direct connectivity probes","parameters":[{"name":"service","in":"query","required":false,"schema":{"type":"string"},"example":"Instagram"},{"name":"days","in":"query","required":false,"schema":{"type":"string"},"example":"30"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/connectivity/verdicts":{"get":{"operationId":"connectivityVerdicts","tags":["connectivity"],"summary":"Direct connectivity probes","parameters":[{"name":"q","in":"query","required":false,"schema":{"type":"string"},"example":"instagram.com"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/vantage":{"get":{"operationId":"vantage","tags":["connectivity"],"summary":"Direct connectivity probes","parameters":[{"name":"service","in":"query","required":false,"schema":{"type":"string"},"example":"Instagram"},{"name":"days","in":"query","required":false,"schema":{"type":"string"},"example":"30"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/vantage/strategies":{"get":{"operationId":"vantageStrategies","tags":["connectivity"],"summary":"Direct connectivity probes","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"string"},"example":"7"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/connectivity/service-categories":{"get":{"operationId":"connectivityServiceCategories","tags":["connectivity"],"summary":"Direct connectivity probes","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/connectivity/recent-changes":{"get":{"operationId":"connectivityRecentChanges","tags":["connectivity"],"summary":"Direct connectivity probes","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/disruptions/frequency":{"get":{"operationId":"disruptionsFrequency","tags":["disruptions"],"summary":"Disruption patterns","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/disruptions/service-heatmap":{"get":{"operationId":"disruptionsServiceHeatmap","tags":["disruptions"],"summary":"Disruption patterns","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/disruptions/timeline":{"get":{"operationId":"disruptionsTimeline","tags":["disruptions"],"summary":"Disruption patterns","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/disruptions/correlation":{"get":{"operationId":"disruptionsCorrelation","tags":["disruptions"],"summary":"Disruption patterns","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/disruptions/protocol-impact":{"get":{"operationId":"disruptionsProtocolImpact","tags":["disruptions"],"summary":"Disruption patterns","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/disruptions/duration":{"get":{"operationId":"disruptionsDuration","tags":["disruptions"],"summary":"Disruption patterns","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/disruptions/isp-frequency":{"get":{"operationId":"disruptionsIspFrequency","tags":["disruptions"],"summary":"Disruption patterns","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/disruptions/monthly-heatmap":{"get":{"operationId":"disruptionsMonthlyHeatmap","tags":["disruptions"],"summary":"Disruption patterns","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/disruptions/patterns/connectivity":{"get":{"operationId":"disruptionsPatternsConnectivity","tags":["disruptions"],"summary":"Disruption patterns","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/throttling-signal":{"get":{"operationId":"dpiThrottlingSignal","tags":["dpi"],"summary":"DPI & throttling","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/indicators":{"get":{"operationId":"dpiIndicators","tags":["dpi"],"summary":"DPI & throttling","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/protocol-analysis":{"get":{"operationId":"dpiProtocolAnalysis","tags":["dpi"],"summary":"DPI & throttling","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/http-versions":{"get":{"operationId":"dpiHttpVersions","tags":["dpi"],"summary":"DPI & throttling","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/24h-signal":{"get":{"operationId":"dpi24hSignal","tags":["dpi"],"summary":"DPI & throttling","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/incident-heatmap":{"get":{"operationId":"dpiIncidentHeatmap","tags":["dpi"],"summary":"DPI & throttling","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/temporal-pattern":{"get":{"operationId":"dpiTemporalPattern","tags":["dpi"],"summary":"DPI & throttling","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/middlebox":{"get":{"operationId":"dpiMiddlebox","tags":["dpi"],"summary":"DPI & throttling","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/injectors":{"get":{"operationId":"dpiInjectors","tags":["dpi"],"summary":"DPI & throttling","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"string"},"example":"90"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/dns-protocols":{"get":{"operationId":"dpiDnsProtocols","tags":["dpi"],"summary":"DPI & throttling","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/tls-versions":{"get":{"operationId":"dpiTlsVersions","tags":["dpi"],"summary":"DPI & throttling","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/quality-history":{"get":{"operationId":"dpiQualityHistory","tags":["dpi"],"summary":"DPI & throttling","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/dpi/adoption":{"get":{"operationId":"dpiAdoption","tags":["dpi"],"summary":"DPI & throttling","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/exports/incidents.json":{"get":{"operationId":"exportsIncidentsJson","tags":["exports"],"summary":"Bulk exports","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/exports/incidents.csv":{"get":{"operationId":"exportsIncidentsCsv","tags":["exports"],"summary":"Bulk exports","parameters":[],"responses":{"200":{"description":"OK","content":{"text/csv":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/exports/source-freshness.json":{"get":{"operationId":"exportsSourceFreshnessJson","tags":["exports"],"summary":"Bulk exports","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/exports/source-freshness.csv":{"get":{"operationId":"exportsSourceFreshnessCsv","tags":["exports"],"summary":"Bulk exports","parameters":[],"responses":{"200":{"description":"OK","content":{"text/csv":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/exports/scores.json":{"get":{"operationId":"exportsScoresJson","tags":["exports"],"summary":"Bulk exports","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/exports/timeseries.csv":{"get":{"operationId":"exportsTimeseriesCsv","tags":["exports"],"summary":"Bulk exports","parameters":[],"responses":{"200":{"description":"OK","content":{"text/csv":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/events":{"get":{"operationId":"events","tags":["events"],"summary":"Events — corroborated, derived from the signals","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/events/{id}":{"get":{"operationId":"eventsId","tags":["events"],"summary":"Events — corroborated, derived from the signals","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/freedom/scores":{"get":{"operationId":"freedomScores","tags":["freedom"],"summary":"Internet freedom scores","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/freedom/isoc-resilience":{"get":{"operationId":"freedomIsocResilience","tags":["freedom"],"summary":"Internet freedom scores","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ihr/hegemony":{"get":{"operationId":"ihrHegemony","tags":["ihr"],"summary":"IHR — internet chokepoints","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ihr/top-chokepoints":{"get":{"operationId":"ihrTopChokepoints","tags":["ihr"],"summary":"IHR — internet chokepoints","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ihr/summary":{"get":{"operationId":"ihrSummary","tags":["ihr"],"summary":"IHR — internet chokepoints","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/incidents/{id}/evidence":{"get":{"operationId":"incidentsIdEvidence","tags":["incidents"],"summary":"Incidents","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/incidents":{"get":{"operationId":"incidents","tags":["incidents"],"summary":"Incidents","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/incidents/daily":{"get":{"operationId":"incidentsDaily","tags":["incidents"],"summary":"Incidents","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/incidents/stats":{"get":{"operationId":"incidentsStats","tags":["incidents"],"summary":"Incidents","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/incidents/area":{"get":{"operationId":"incidentsArea","tags":["incidents"],"summary":"Incidents","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/incidents/summary":{"get":{"operationId":"incidentsSummary","tags":["incidents"],"summary":"Incidents","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/incidents/velocity":{"get":{"operationId":"incidentsVelocity","tags":["incidents"],"summary":"Incidents","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ioda/signals":{"get":{"operationId":"iodaSignals","tags":["ioda"],"summary":"IODA outage signals","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ioda/summary":{"get":{"operationId":"iodaSummary","tags":["ioda"],"summary":"IODA outage signals","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ioda/asn-signals":{"get":{"operationId":"iodaAsnSignals","tags":["ioda"],"summary":"IODA outage signals","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ioda/outages":{"get":{"operationId":"iodaOutages","tags":["ioda"],"summary":"IODA outage signals","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/isp/current":{"get":{"operationId":"ispCurrent","tags":["isp"],"summary":"ISP monitoring","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/isp/speed":{"get":{"operationId":"ispSpeed","tags":["isp"],"summary":"ISP monitoring","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/mobile/carriers":{"get":{"operationId":"mobileCarriers","tags":["mobile"],"summary":"Mobile carriers & eSIM","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/mobile/esim-providers":{"get":{"operationId":"mobileEsimProviders","tags":["mobile"],"summary":"Mobile carriers & eSIM","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ooni/latest":{"get":{"operationId":"ooniLatest","tags":["ooni"],"summary":"OONI measurements","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ooni/history":{"get":{"operationId":"ooniHistory","tags":["ooni"],"summary":"OONI measurements","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ooni/domains":{"get":{"operationId":"ooniDomains","tags":["ooni"],"summary":"OONI measurements","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ooni/domains/changes":{"get":{"operationId":"ooniDomainsChanges","tags":["ooni"],"summary":"OONI measurements","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"string"},"example":"7"}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ooni/categories":{"get":{"operationId":"ooniCategories","tags":["ooni"],"summary":"OONI measurements","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ooni/test-list":{"get":{"operationId":"ooniTestList","tags":["ooni"],"summary":"OONI measurements","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ooni/test-list/stats":{"get":{"operationId":"ooniTestListStats","tags":["ooni"],"summary":"OONI measurements","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/ooni/blocking-methods":{"get":{"operationId":"ooniBlockingMethods","tags":["ooni"],"summary":"OONI measurements","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/overview":{"get":{"operationId":"overview","tags":["overview"],"summary":"Dashboard overview","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/protocols":{"get":{"operationId":"protocols","tags":["protocols"],"summary":"Circumvention protocols","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/reports":{"get":{"operationId":"reports","tags":["reports"],"summary":"Monthly reports","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/reports/{month}":{"get":{"operationId":"reportsMonth","tags":["reports"],"summary":"Monthly reports","parameters":[{"name":"month","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/resources":{"get":{"operationId":"resources","tags":["resources"],"summary":"Resources","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/resources/access-now":{"get":{"operationId":"resourcesAccessNow","tags":["resources"],"summary":"Resources","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/resources/reach":{"get":{"operationId":"resourcesReach","tags":["resources"],"summary":"Resources","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/routing/metrics":{"get":{"operationId":"routingMetrics","tags":["routing"],"summary":"BGP routing","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/routing/asn-explorer":{"get":{"operationId":"routingAsnExplorer","tags":["routing"],"summary":"BGP routing","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/routing/bgp-history":{"get":{"operationId":"routingBgpHistory","tags":["routing"],"summary":"BGP routing","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/routing/bgp-updates":{"get":{"operationId":"routingBgpUpdates","tags":["routing"],"summary":"BGP routing","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/routing/bgp-events":{"get":{"operationId":"routingBgpEvents","tags":["routing"],"summary":"BGP routing","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/routing/prefix-history":{"get":{"operationId":"routingPrefixHistory","tags":["routing"],"summary":"BGP routing","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/routing/bgp-stream":{"get":{"operationId":"routingBgpStream","tags":["routing"],"summary":"BGP routing","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/routing/atlas":{"get":{"operationId":"routingAtlas","tags":["routing"],"summary":"BGP routing","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/routing/ripe-probes":{"get":{"operationId":"routingRipeProbes","tags":["routing"],"summary":"BGP routing","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/snapshot/daily.json":{"get":{"operationId":"snapshotDailyJson","tags":["snapshot"],"summary":"Daily snapshot — canonical JSON with SHA-256","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/snapshot/daily.sha256":{"get":{"operationId":"snapshotDailySha256","tags":["snapshot"],"summary":"Daily snapshot — canonical JSON with SHA-256","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/status/verdict":{"get":{"operationId":"statusVerdict","tags":["status"],"summary":"Live status & source freshness","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/status/sources":{"get":{"operationId":"statusSources","tags":["status"],"summary":"Live status & source freshness","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/status/sources/history":{"get":{"operationId":"statusSourcesHistory","tags":["status"],"summary":"Live status & source freshness","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/status":{"get":{"operationId":"status","tags":["status"],"summary":"Live status & source freshness","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/tor/usage":{"get":{"operationId":"torUsage","tags":["tor"],"summary":"Tor network usage","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/tor/demand":{"get":{"operationId":"torDemand","tags":["tor"],"summary":"Tor network usage","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}},"/api/v1/tor/transports":{"get":{"operationId":"torTransports","tags":["tor"],"summary":"Tor network usage","parameters":[],"responses":{"200":{"description":"OK","content":{"application/json":{}}},"503":{"description":"The source could not be read just now","content":{"application/json":{}}}}}}}}