{"openapi":"3.0.1","info":{"title":"OpenAPI definition","version":"v0"},"servers":[{"url":"https://api.g7vrd.co.uk","description":"Generated server url"}],"paths":{"/weblog/v1/log":{"post":{"tags":["weblog-controller"],"operationId":"log","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogRequest"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/weblog/v1/auth/validate-code":{"post":{"tags":["weblog-controller"],"operationId":"validateCode","requestBody":{"content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/weblog/v1/auth/request-code":{"post":{"tags":["weblog-controller"],"operationId":"requestCode","requestBody":{"content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/signalreports/v1/reports":{"get":{"tags":["signal-reports-controller"],"operationId":"getSignalReports","parameters":[{"name":"n","in":"query","required":true,"schema":{"type":"number"}},{"name":"s","in":"query","required":true,"schema":{"type":"number"}},{"name":"e","in":"query","required":true,"schema":{"type":"number"}},{"name":"w","in":"query","required":true,"schema":{"type":"number"}},{"name":"hzs","in":"query","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"hze","in":"query","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"ts","in":"query","required":true,"schema":{"type":"string","format":"date-time"}},{"name":"te","in":"query","required":true,"schema":{"type":"string","format":"date-time"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SignalReportResponse"}}}}}},"post":{"tags":["signal-reports-controller"],"operationId":"submitReports","requestBody":{"content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SignalReport"}}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/wspr":{"get":{"tags":["wspr-activity-controller"],"summary":"Search for recent WSPR reports","operationId":"wsprSearch","parameters":[{"name":"locator","in":"query","required":false,"schema":{"type":"string"}},{"name":"callsign","in":"query","required":false,"schema":{"type":"string"}},{"name":"band","in":"query","required":false,"schema":{"type":"string"}},{"name":"country","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RecentActivity"}}}}}}},"/wspr/{locator}":{"get":{"tags":["wspr-activity-controller"],"summary":"Get recent WSPR reports by Maidenhead grid square","operationId":"getWsprByLocator","parameters":[{"name":"locator","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RecentActivity"}}}}}}},"/wspr/{loc1}/{loc2}":{"get":{"tags":["wspr-activity-controller"],"summary":"Get recent WSPR reports between two Maidenhead grid squares","operationId":"getWspr2","parameters":[{"name":"loc1","in":"path","required":true,"schema":{"type":"string"}},{"name":"loc2","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RecentActivity"}}}}}}},"/weather":{"get":{"tags":["weather-controller"],"summary":"Get recent space weather reports","operationId":"getWeather","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/WeatherResponse"}}}}}}},"/v1/satellite-passes/{noradid}/{lat}/{lon}.rss":{"get":{"tags":["satellite-passes-controller"],"summary":"Get satellite passes in RSS","operationId":"getPassesRss","parameters":[{"name":"noradid","in":"path","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"lat","in":"path","required":true,"schema":{"type":"number","format":"double"}},{"name":"lon","in":"path","required":true,"schema":{"type":"number","format":"double"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":48}},{"name":"minelevation","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":30}}],"responses":{"200":{"description":"OK"}}}},"/v1/satellite-passes/{noradid}/{lat}/{lon}.json":{"get":{"tags":["satellite-passes-controller"],"summary":"Get satellite passes in JSON","operationId":"getPassesJson","parameters":[{"name":"noradid","in":"path","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"lat","in":"path","required":true,"schema":{"type":"number","format":"double"}},{"name":"lon","in":"path","required":true,"schema":{"type":"number","format":"double"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":48}},{"name":"minelevation","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":30}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SatellitePassResponse"}}}}}}},"/v1/satellite-passes/{noradid}/{lat}/{lon}.ical":{"get":{"tags":["satellite-passes-controller"],"summary":"Get satellite passes in ICAL format","operationId":"getPassesIcal","parameters":[{"name":"noradid","in":"path","required":true,"schema":{"type":"integer","format":"int32"}},{"name":"lat","in":"path","required":true,"schema":{"type":"number","format":"double"}},{"name":"lon","in":"path","required":true,"schema":{"type":"number","format":"double"}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":48}},{"name":"minelevation","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":30}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"string"}}}}}}},"/v1/satellite-passes/satellites.json":{"get":{"tags":["satellite-passes-controller"],"summary":"Get the list of supported satellites","operationId":"getSatelliteList","responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/V1SatelliteListResponse"}}}}}}},"/v1/maidenhead-to-lat-lon/{loc}":{"get":{"tags":["maidenhead-controller-v-1"],"summary":"Convert a Maidenhead grid square to a lat, lon","operationId":"locatorToLatLon","parameters":[{"name":"loc","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/MaidenheadToLatLonResponseV1"}}}}}}},"/v1/locators/by-dxcc/{dxcc}":{"get":{"tags":["locators-controller"],"summary":"Get the locators associated with a DXCC entity","operationId":"getLocatorsByDxcc","parameters":[{"name":"dxcc","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LocatorsByDxccResponse"}}}}}}},"/v1/locators/by-callsign/{callsigns}":{"get":{"tags":["locators-controller"],"summary":"Get the locator associated with a callsign","operationId":"getLocators","parameters":[{"name":"callsigns","in":"path","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LocatorResponse"}}}}}}},"/v1/livepasses/{lat},{lon}":{"get":{"tags":["live-pass-controller"],"summary":"Get the next amateur radio satellite passes for a lat, lon","operationId":"getLivePasses","parameters":[{"name":"lat","in":"path","required":true,"schema":{"type":"number","format":"double"}},{"name":"lon","in":"path","required":true,"schema":{"type":"number","format":"double"}},{"name":"minEl","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":45}},{"name":"hours","in":"query","required":false,"schema":{"type":"integer","format":"int32","default":1}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LivePassesResponse"}}}}}}},"/v1/lat-lon-to-maidenhead/{latLon}":{"get":{"tags":["maidenhead-controller-v-1"],"summary":"Convert lat, lon to a Maidenhead grid square","operationId":"latLonToLocator","parameters":[{"name":"latLon","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LatLonToMaidenheadResponseV1"}}}}}}},"/v1/dxcc/by-locator/{locator}":{"get":{"tags":["dxcc-v-1-controller"],"summary":"Get DXCC entities associated with a Maidenhead grid square","operationId":"getCountriesByLocator","parameters":[{"name":"locator","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CountriesByLocatorV2Response"}}}}}}},"/spots/recent":{"get":{"tags":["spot-controller"],"summary":"Get recent spots","operationId":"getRecentSpots","parameters":[{"name":"seconds","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SpotsResponse"}}}}}}},"/skims/recent":{"get":{"tags":["skim-controller"],"summary":"Get recent skims","operationId":"getRecentSpots_1","parameters":[{"name":"loconly","in":"query","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SkimsResponse"}}}}}}},"/skims/recent/{locators}":{"get":{"tags":["skim-controller"],"summary":"Get recent skims for locators","operationId":"getRecentSpots_2","parameters":[{"name":"locators","in":"path","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SkimsResponse"}}}}}}},"/bandstats/{locator1}/{locator2}":{"get":{"tags":["band-stat-controller"],"summary":"Show recent bandstats between two Maidenhead grid squares","operationId":"getBandstatsBetween","parameters":[{"name":"locator1","in":"path","required":true,"schema":{"type":"string"}},{"name":"locator2","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}},"/bandstats/v2/{locator1}/{locator2}":{"get":{"tags":["band-stat-controller"],"summary":"Show best band between two Maidenhead grid squares","operationId":"getBandstatsV2Between","parameters":[{"name":"locator1","in":"path","required":true,"schema":{"type":"string"}},{"name":"locator2","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"object"}}}}}}}},"components":{"schemas":{"LogRequest":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"email":{"type":"string"},"myCallsign":{"type":"string"},"myGrid":{"type":"string"},"radioFrequency":{"type":"integer","format":"int64"},"radioMode":{"type":"string"},"radioWatts":{"type":"integer","format":"int32"},"radioSignalDb":{"type":"integer","format":"int32"},"qsoMode":{"type":"string"},"callsign":{"type":"string"},"rstRcvd":{"type":"integer","format":"int32"},"rstSent":{"type":"integer","format":"int32"},"notes":{"type":"string"}}},"SignalReport":{"type":"object","properties":{"ts":{"type":"string","format":"date-time"},"lat":{"type":"number"},"lon":{"type":"number"},"accuracy":{"type":"integer","format":"int32"},"hz":{"type":"integer","format":"int64"},"db":{"type":"integer","format":"int32"}}},"RecentActivity":{"type":"object","properties":{"elapsed":{"type":"integer","format":"int64"},"timestamp":{"type":"string","format":"date-time"},"nextrefresh":{"type":"integer","format":"int64"},"contacts":{"type":"array","items":{"$ref":"#/components/schemas/Wspr"}},"weather":{"$ref":"#/components/schemas/WeatherResponse"},"currentusers":{"type":"array","items":{"type":"string"}}}},"Wcy":{"type":"object","properties":{"ts":{"type":"string","format":"date-time"},"raw":{"type":"string"},"sfi":{"type":"integer","format":"int32"},"a":{"type":"integer","format":"int32"},"k":{"type":"integer","format":"int32"},"r":{"type":"integer","format":"int32"},"sa":{"type":"string"},"gmf":{"type":"string"},"au":{"type":"string"},"expk":{"type":"integer","format":"int32"}}},"WeatherResponse":{"type":"object","properties":{"wcy":{"$ref":"#/components/schemas/Wcy"},"wwv":{"$ref":"#/components/schemas/Wwv"}}},"Wspr":{"type":"object","properties":{"id":{"type":"string"},"received":{"type":"string","format":"date-time"},"source":{"type":"string"},"remote":{"type":"string"},"hz":{"type":"integer","format":"int64"},"sourcegrid":{"type":"string"},"remotegrid":{"type":"string"},"sourcecountry":{"type":"string"},"remotecountry":{"type":"string"},"band":{"type":"string"},"pwr":{"type":"number","format":"double"},"snr":{"type":"integer","format":"int32"},"km":{"type":"integer","format":"int32"},"az":{"type":"integer","format":"int32"},"drift":{"type":"integer","format":"int32"},"timestamp":{"type":"string","format":"date-time"}}},"Wwv":{"type":"object","properties":{"ts":{"type":"string","format":"date-time"},"raw":{"type":"string"},"sfi":{"type":"integer","format":"int32"},"a":{"type":"integer","format":"int32"},"k":{"type":"integer","format":"int32"}}},"SatellitePass":{"type":"object","properties":{"start":{"type":"string","format":"date-time"},"tca":{"type":"string","format":"date-time"},"end":{"type":"string","format":"date-time"},"aos_azimuth":{"type":"integer","format":"int32"},"los_azimuth":{"type":"integer","format":"int32"},"max_elevation":{"type":"number","format":"double"}}},"SatellitePassResponse":{"type":"object","properties":{"api_status":{"type":"string","enum":["ALPHA","BETA","STABLE","DEPRECATED"]},"request_timestamp":{"type":"string","format":"date-time"},"norad_id":{"type":"integer","format":"int32"},"satellite_name":{"type":"string"},"tle_last_retrieved":{"type":"string","format":"date-time"},"lat":{"type":"number","format":"double"},"lon":{"type":"number","format":"double"},"hours":{"type":"integer","format":"int32"},"min_elevation":{"type":"integer","format":"int32"},"query_ms":{"type":"integer","format":"int64"},"passes":{"type":"array","items":{"$ref":"#/components/schemas/SatellitePass"}}}},"V1SatelliteListResponse":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"integer","format":"int32"}}}},"LatLon":{"type":"object","properties":{"lat":{"type":"number"},"lon":{"type":"number"}}},"MaidenheadToLatLonResponseV1":{"type":"object","properties":{"status":{"type":"string","enum":["ALPHA","BETA","STABLE","DEPRECATED"]},"locator":{"type":"string"},"lat_lon":{"$ref":"#/components/schemas/LatLon"}}},"DxccCount":{"type":"object","properties":{"locator":{"type":"string"},"count":{"type":"integer","format":"int32"}}},"LocatorsByDxccResponse":{"type":"object","properties":{"status":{"type":"string","enum":["ALPHA","BETA","STABLE","DEPRECATED"]},"dxcc":{"type":"string"},"locators":{"type":"array","items":{"$ref":"#/components/schemas/DxccCount"}}}},"LocatorEntity":{"type":"object","properties":{"callsign":{"type":"string"},"locator":{"type":"string"},"ts":{"type":"string","format":"date-time"}}},"LocatorResponse":{"type":"object","properties":{"status":{"type":"string","enum":["ALPHA","BETA","STABLE","DEPRECATED"]},"count":{"type":"integer","format":"int32"},"locators":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/LocatorEntity"}},"queryMs":{"type":"integer","format":"int64"}}},"LivePass":{"type":"object","properties":{"noradId":{"type":"integer","format":"int32"},"startUTC":{"type":"string","format":"date-time"},"start":{"type":"string"},"aosAzimuth":{"type":"integer","format":"int32"},"maxEl":{"type":"integer","format":"int32"},"tca":{"type":"string"},"losAzimuth":{"type":"integer","format":"int32"},"end":{"type":"string"},"url":{"type":"string"}}},"LivePassesResponse":{"type":"object","properties":{"refresh":{"type":"integer","format":"int32"},"lat":{"type":"number","format":"double"},"lon":{"type":"number","format":"double"},"minEl":{"type":"integer","format":"int32"},"utc":{"type":"string","format":"date-time"},"passes":{"type":"array","items":{"$ref":"#/components/schemas/LivePass"}}}},"LatLonToMaidenheadResponseV1":{"type":"object","properties":{"status":{"type":"string","enum":["ALPHA","BETA","STABLE","DEPRECATED"]},"lat_lon":{"$ref":"#/components/schemas/LatLon"},"locator":{"type":"string"}}},"CountriesByLocatorV2Response":{"type":"object","properties":{"status":{"type":"string","enum":["ALPHA","BETA","STABLE","DEPRECATED"]},"locator":{"type":"string"},"entities":{"type":"array","items":{"$ref":"#/components/schemas/StringWithPercentage"}}}},"StringWithPercentage":{"type":"object","properties":{"entity":{"type":"string"},"percentage":{"type":"number","format":"float"}}},"Spot":{"type":"object","properties":{"id":{"type":"string"},"ts":{"type":"string","format":"date-time"},"source":{"type":"string"},"sourcegrid":{"type":"string"},"sourcecountry":{"type":"string"},"remote":{"type":"string"},"remotegrid":{"type":"string"},"remotecountry":{"type":"string"},"note":{"type":"string"},"khz":{"type":"number","format":"double"},"band":{"type":"string"},"mode":{"type":"string"},"prop":{"type":"string"},"grid":{"type":"string"}}},"SpotsResponse":{"type":"object","properties":{"weather":{"$ref":"#/components/schemas/WeatherResponse"},"queryMs":{"type":"integer","format":"int64"},"seconds":{"type":"integer","format":"int32"},"spots":{"type":"array","items":{"$ref":"#/components/schemas/Spot"}}}},"Skim":{"type":"object","properties":{"id":{"type":"string"},"ts":{"type":"string","format":"date-time"},"skimmer":{"type":"string"},"hz":{"type":"integer","format":"int64"},"call":{"type":"string"},"mode":{"type":"string"},"db":{"type":"integer","format":"int32"},"speed":{"type":"integer","format":"int32"},"unit":{"type":"string"},"thing":{"type":"string"},"utc":{"type":"integer","format":"int32"},"band":{"type":"string"},"sourceCountry":{"type":"string"},"remoteCountry":{"type":"string"},"sourceGrid":{"$ref":"#/components/schemas/LocatorEntity"},"remoteGrid":{"$ref":"#/components/schemas/LocatorEntity"},"khz":{"type":"integer","format":"int64","writeOnly":true}}},"SkimsResponse":{"type":"object","properties":{"queryMs":{"type":"integer","format":"int64"},"skims":{"type":"array","items":{"$ref":"#/components/schemas/Skim"}}}},"SignalReportResponse":{"type":"object","properties":{"reports":{"type":"array","items":{"$ref":"#/components/schemas/SignalReport"}}}}}}}