{"openapi":"3.1.0","info":{"title":"GPS Interference API","version":"1.0.0","summary":"Rolling 24-hour hexagon summaries of aircraft-reported GPS accuracy.","description":"Public read API for gpsinterference.com. Low reported accuracy (NACp 7 or lower) is not confirmed jamming and does not identify a source. Aircraft data from adsb.lol, adsb.fi, airplanes.live and adsb.one under the Open Database License. Cite https://gpsinterference.com. Responses carry x-robots-tag: noindex. CORS is limited to https://gpsinterference.com and https://www.gpsinterference.com. There is no application rate limit. The worker sets max-age=60 on the latest summary; a zone override has been observed rewriting that to max-age=14400.","license":{"name":"ODbL-1.0","url":"https://opendatacommons.org/licenses/odbl/"}},"servers":[{"url":"https://api.gpsinterference.com"}],"paths":{"/v1/interference/latest":{"get":{"operationId":"getLatest","summary":"Latest rolling window. Same body as /interference.json.","responses":{"200":{"$ref":"#/components/responses/Summary"},"503":{"$ref":"#/components/responses/Error"}}}},"/interference.json":{"get":{"operationId":"getLatestAlias","summary":"Alias of /v1/interference/latest.","responses":{"200":{"$ref":"#/components/responses/Summary"},"503":{"$ref":"#/components/responses/Error"}}}},"/v1/interference/{date}":{"get":{"operationId":"getDay","summary":"Last summary stored for one UTC day.","parameters":[{"name":"date","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"description":"UTC calendar date, YYYY-MM-DD."}],"responses":{"200":{"$ref":"#/components/responses/Day"},"404":{"$ref":"#/components/responses/Error"}}}},"/v1/interference/days":{"get":{"operationId":"listDays","summary":"Date index. Counts and timestamps only, no polygons.","responses":{"200":{"description":"Oldest first.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DayIndex"}}}}}}}}},"components":{"responses":{"Summary":{"description":"Rolling window. Worker cache-control max-age=60, subject to a zone override.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Summary"}}}},"Day":{"description":"Frozen days use max-age=86400. Today's copy uses max-age=60 and complete=false.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DaySummary"}}}},"Error":{"description":"JSON error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string","examples":["no archive","no data yet"]}}},"DayIndex":{"type":"object","required":["date","updated","hexes"],"properties":{"date":{"type":"string","description":"UTC date, YYYY-MM-DD."},"updated":{"type":"string","format":"date-time"},"hexes":{"type":"integer","minimum":0,"description":"Number of drawn hexagons, not the polygons."}}},"Hex":{"type":"object","required":["h","g","b","p","c","poly"],"properties":{"h":{"type":"string","description":"Cell id, column_row.","examples":["0_0"]},"g":{"type":"integer","minimum":0,"description":"Distinct aircraft with NACp above 7."},"b":{"type":"integer","minimum":0,"description":"Distinct aircraft that reported NACp 7 or lower at least once."},"p":{"type":"number","minimum":0,"maximum":100,"description":"Share affected, percent, one decimal place."},"c":{"type":"string","enum":["g","y","r"],"description":"g under 3%, y 3% to 10%, r over 10%, from the rounded percentage."},"poly":{"type":"array","minItems":3,"maxItems":8,"items":{"type":"array","minItems":2,"maxItems":2,"items":{"type":"number"},"description":"[latitude, longitude] in degrees."}}}},"Summary":{"type":"object","required":["updated","window_minutes","hexes"],"properties":{"updated":{"type":"string","format":"date-time","description":"UTC time the summary was written."},"window_minutes":{"type":"integer","description":"Length of the rolling window. 1440 in normal operation."},"aircraft":{"type":"integer","minimum":0},"hexes":{"type":"array","items":{"$ref":"#/components/schemas/Hex"}},"sources":{"type":"array","items":{"type":"string"},"description":"Feeds that returned aircraft on the run which wrote this summary."},"collector":{"type":"string"},"polled_points":{"type":"integer","minimum":0,"description":"Sample circles that returned on that run."},"grid_points":{"type":"integer","minimum":0,"description":"Sample circles in the world grid."},"failed_points":{"type":"integer","minimum":0},"method":{"type":"string"}}},"DaySummary":{"allOf":[{"$ref":"#/components/schemas/Summary"},{"type":"object","required":["archive_date","complete"],"properties":{"archive_date":{"type":"string","description":"UTC date of this snapshot, YYYY-MM-DD."},"complete":{"type":"boolean","description":"False only while this UTC day is still today."}}}]}}}}