{"openapi":"3.1.0","info":{"title":"Flood-Net station API","version":"1.0.0","summary":"Read-only public station data from the Flood-Net telemetry network register.","description":"Read-only, public station-level data from Flood-Net (https://floodwarning.net): the register of the Bureau of Meteorology's Queensland flood-warning telemetry network. Rate limited (60 requests / 60 s per client; 20 requests / 10 s per client (burst); 240 requests / 60 s per address); a 429 carries Retry-After. The same data is served to MCP clients at https://floodwarning.net/api/mcp. Documentation: https://github.com/cdomotor-g/MegaNet/blob/main/docs/agent-api.md. Flood-Net is not a flood warning service, and it does not issue warnings, forecasts or public alerts. It is engineering tooling for the radio networks that telemetry travels over — an asset register, a path planner and a fault-finding aid. Nothing here should be read as an official statement about flooding, river conditions or public safety. It is also not an official product of, and is not endorsed by, the Australian Bureau of Meteorology or any other agency. For official Australian flood warnings and river height data, go to the Bureau of Meteorology: http://www.bom.gov.au/australia/flood/","license":{"name":"MIT","identifier":"MIT"}},"servers":[{"url":"https://floodwarning.net"}],"paths":{"/api/v1/":{"get":{"operationId":"getApiIndex","summary":"API index","description":"What this API is: endpoints, rate limits, links to the docs, the MCP server and this document.","parameters":[],"responses":{"200":{"description":"The index.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/openapi.json":{"get":{"operationId":"getOpenApi","summary":"OpenAPI document","description":"This document.","parameters":[],"responses":{"200":{"description":"An OpenAPI 3.1 document.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/stations":{"get":{"operationId":"searchStations","summary":"Search stations","description":"Find stations by name, Bureau or AWRC number, or ALERT address; filter by catchment, basin, LGA, hub, network, role, kind or SLS gauge type; or list those near a point. Compact rows, or GeoJSON for a map; page with \"next\".","parameters":[{"name":"q","in":"query","required":false,"description":"Name words, a Bureau station number, an AWRC number or an ALERT address (2–100 characters; a number may be shorter). Ranked by relevance.","schema":{"type":"string","minLength":1,"maxLength":100}},{"name":"near","in":"query","required":false,"description":"A point as \"lat,lon\" in decimal degrees; results are sorted by distance and carry distance_km, bearing_deg and direction.","schema":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?$"}},{"name":"radius_km","in":"query","required":false,"description":"Radius around \"near\", 0.01–250 km (default 25).","schema":{"type":"number","minimum":0.01,"maximum":250}},{"name":"catchment","in":"query","required":false,"description":"A Queensland drainage basin, by id (\"herbert\") or name (\"Herbert\"). See /api/v1/catchments.","schema":{"type":"string"}},{"name":"basin","in":"query","required":false,"description":"Words in the Bureau's basin name for the station, e.g. \"Burdekin\".","schema":{"type":"string"}},{"name":"lga","in":"query","required":false,"description":"Words in the local government area, e.g. \"Townsville\".","schema":{"type":"string"}},{"name":"hub","in":"query","required":false,"description":"A maintenance hub id, e.g. \"cairns\". See /api/v1/networks.","schema":{"type":"string"}},{"name":"network","in":"query","required":false,"description":"A radio network id. See /api/v1/networks.","schema":{"type":"string"}},{"name":"role","in":"query","required":false,"description":"The station's role in the network.","schema":{"type":"string","enum":["field","repeater","base"]}},{"name":"type","in":"query","required":false,"description":"A kind: rain or river (from ALERT addresses, location types and the Bureau's river height list), repeater or base.","schema":{"type":"string","enum":["rain","river","repeater","base"]}},{"name":"manual","in":"query","required":false,"description":"true: stations the Service Level Specification lists as Manual; false: as Automatic. Stations not in the SLS match neither.","schema":{"type":"boolean"}},{"name":"format","in":"query","required":false,"description":"json (default), or geojson: a GeoJSON FeatureCollection (RFC 7946) of Point features at [lon, lat], each feature's properties the row the JSON answer gives. A station with no recorded position is left out and named in omitted_without_position.","schema":{"type":"string","enum":["json","geojson"],"default":"json"}},{"name":"limit","in":"query","required":false,"description":"Rows per page, 1–100 (default 25). Larger values are clamped with a note.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging; follow \"next\".","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"A page of compact station rows, or a GeoJSON FeatureCollection of them.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StationList"}},"application/geo+json":{"schema":{"$ref":"#/components/schemas/FeatureCollection"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/stations/{id}":{"get":{"operationId":"getStation","summary":"Get a station","description":"One station's full register record (the stations.json fragment), its Service Level Specification rows and its latest health row.","parameters":[{"$ref":"#/components/parameters/StationId"}],"responses":{"200":{"description":"The station.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/stations/{id}/dossier":{"get":{"operationId":"getStationDossier","summary":"Get a station dossier","description":"Everything an assessment report needs about one station in one call: identity, location, radio, telemetry and health, SLS, Bureau flood details, AEP levels, inspections, nearby stations — each section labelled with its source and status.","parameters":[{"$ref":"#/components/parameters/StationId"}],"responses":{"200":{"description":"The dossier.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/stations/{id}/health":{"get":{"operationId":"getStationHealth","summary":"Get a station's health","description":"Station Health on one station over 3, 7 or 14 days: its findings worst first (severity, title, detail, action, since, evidence), its learned check schedule with checks received and missed each day, and its battery's night lows and trend. From the server's run every 15 minutes.","parameters":[{"$ref":"#/components/parameters/StationId"},{"name":"days","in":"query","required":false,"description":"The window Station Health works over, in days: 3, 7, 14 (default 7), as on the tab.","schema":{"type":"integer","enum":[3,7,14],"default":7}}],"responses":{"200":{"description":"The station's health over the window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/stations/{id}/readings":{"get":{"operationId":"getStationReadings","summary":"Get readings","description":"Telemetry ingested into Flood-Net for one station. raw: up to 7 days; hourly: 31; daily: 731. At most 5000 rows per call.","parameters":[{"$ref":"#/components/parameters/StationId"},{"name":"from","in":"query","required":false,"description":"Start, ISO 8601 date or date-time (default: the window before \"to\").","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"End (exclusive for raw and hourly), ISO 8601 (default: now).","schema":{"type":"string"}},{"name":"resolution","in":"query","required":false,"description":"raw readings, or hourly or daily rollups (default hourly).","schema":{"type":"string","enum":["raw","hourly","daily"],"default":"hourly"}},{"name":"channel","in":"query","required":false,"description":"One channel: an ALERT address (6128 or a:6128), s:<number>/<channel>, or a sensor type such as \"Water Level\".","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows per page, 1–5000 (default 1000). Larger values are clamped with a note.","schema":{"type":"integer","minimum":1,"maximum":5000,"default":1000}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging; follow \"next\".","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"Readings or rollups.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/stations/{id}/flood-levels":{"get":{"operationId":"getStationFloodLevels","summary":"Get flood levels","description":"Flood classes (by edition), the SLS classes, crossings, the gauge zero and datum, flood effects, AEP levels and one ladder in m AHD — with the datum caveats.","parameters":[{"$ref":"#/components/parameters/StationId"}],"responses":{"200":{"description":"Flood levels.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/stations/{id}/service-level":{"get":{"operationId":"getStationServiceLevel","summary":"Get the SLS entries","description":"The station's entries in the Service Level Specifications (QLD; NSW and the ACT), one per document that lists it: gauge type, data type, priority, owner, schedules, flood classes and prediction — and the NSW gauge datum and AWRC number — with each edition.","parameters":[{"$ref":"#/components/parameters/StationId"}],"responses":{"200":{"description":"The SLS entries.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/stations/{id}/acma":{"get":{"operationId":"getStationAcmaLicences","summary":"Get a station's ACMA licences","description":"The ACMA licences Flood-Net records for the station, each looked up in the register; the register's licences at sites within radius_m, with licensee, frequencies, power, distance and whether it matches a station frequency; and the repeaters that relay it.","parameters":[{"$ref":"#/components/parameters/StationId"},{"name":"radius_m","in":"query","required":false,"description":"Metres around the station to list the register's licences, 1–5000 (default 500).","schema":{"type":"number","minimum":1,"maximum":5000,"default":500}},{"name":"freq_mhz","in":"query","required":false,"description":"Frequencies in MHz, comma-separated (up to 8), to match the register against besides those Flood-Net records — e.g. 151.525. A match is within 6.25 kHz.","schema":{"type":"string","maxLength":100}},{"name":"all","in":"query","required":false,"description":"true lists every licence within radius_m. By default only those a telemetry site's licensing is about: the station's recorded ones, those on its frequencies (or freq_mhz), the Bureau's and the rest of 148–174 MHz.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The recorded licences, the register around the station, and the repeaters that relay it.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/acma":{"get":{"operationId":"getAcmaLicencesNear","summary":"Get the ACMA licences near a point","description":"The ACMA register's licences at sites within radius_m of a point — for a site not built yet, or a station being moved: licensee, frequencies, power, emission, distance, the site's stated precision.","parameters":[{"name":"near","in":"query","required":true,"description":"The point, \"lat,lon\" in decimal degrees.","schema":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?,-?\\d+(\\.\\d+)?$"}},{"name":"radius_m","in":"query","required":false,"description":"Metres around the point, 1–5000 (default 500).","schema":{"type":"number","minimum":1,"maximum":5000,"default":500}},{"name":"freq_mhz","in":"query","required":false,"description":"Frequencies in MHz, comma-separated (up to 8), to flag the licences on — e.g. 151.525. A match is within 6.25 kHz.","schema":{"type":"string","maxLength":100}},{"name":"all","in":"query","required":false,"description":"true lists every licence within radius_m. By default only those a telemetry site's licensing is about: the station's recorded ones, those on its frequencies (or freq_mhz), the Bureau's and the rest of 148–174 MHz.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"The register's licences around the point.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/readings/latest":{"get":{"operationId":"getLatestReadings","summary":"Get the latest readings","description":"Every station Flood-Net holds telemetry for, each channel's newest reading and its age, in one call — filtered by radio network, basin, kind or bounding box. Most stations report through the Bureau's own systems and are absent.","parameters":[{"name":"network","in":"query","required":false,"description":"A radio network id. See /api/v1/networks.","schema":{"type":"string"}},{"name":"basin","in":"query","required":false,"description":"Words in the Bureau's basin name for the station, e.g. \"Burdekin\".","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"A kind: rain, river, repeater or base — the same rule as /api/v1/stations.","schema":{"type":"string","enum":["rain","river","repeater","base"]}},{"name":"bbox","in":"query","required":false,"description":"A bounding box, \"west,south,east,north\" in decimal degrees — longitude first, as GeoJSON has it — e.g. 152.5,-28.2,153.6,-27.0.","schema":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?(,-?\\d+(\\.\\d+)?){3}$"}},{"name":"format","in":"query","required":false,"description":"json (default), or geojson: a GeoJSON FeatureCollection (RFC 7946) of Point features at [lon, lat], each feature's properties the row the JSON answer gives. A station with no recorded position is left out and named in omitted_without_position.","schema":{"type":"string","enum":["json","geojson"],"default":"json"}},{"name":"limit","in":"query","required":false,"description":"Rows per page, 1–1000 (default 100). Larger values are clamped with a note.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging; follow \"next\".","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"A page of stations, each with its channels' newest readings; or a GeoJSON FeatureCollection of them.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}},"application/geo+json":{"schema":{"$ref":"#/components/schemas/FeatureCollection"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/health/silent":{"get":{"operationId":"getSilentStations","summary":"Get the silent stations","description":"Stations silent now — missed checks while their receivers kept hearing others — worst first, with when each was last heard, and the groups that went quiet together. From the server's run every 15 minutes; checked_at says when it last looked.","parameters":[{"name":"network","in":"query","required":false,"description":"A radio network id. See /api/v1/networks.","schema":{"type":"string"}},{"name":"basin","in":"query","required":false,"description":"Words in the Bureau's basin name for the station, e.g. \"Burdekin\".","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"A kind: rain, river, repeater or base — the same rule as /api/v1/stations.","schema":{"type":"string","enum":["rain","river","repeater","base"]}},{"name":"bbox","in":"query","required":false,"description":"A bounding box, \"west,south,east,north\" in decimal degrees — longitude first — e.g. 152.5,-28.2,153.6,-27.0.","schema":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?(,-?\\d+(\\.\\d+)?){3}$"}},{"name":"severity","in":"query","required":false,"description":"Only critical, or only warn.","schema":{"type":"string","enum":["critical","warn"]}},{"name":"format","in":"query","required":false,"description":"json (default), or geojson: a GeoJSON FeatureCollection (RFC 7946) of Point features at [lon, lat], each feature's properties the row the JSON answer gives. A station with no recorded position is left out and named in omitted_without_position.","schema":{"type":"string","enum":["json","geojson"],"default":"json"}},{"name":"limit","in":"query","required":false,"description":"Rows per page, 1–1000 (default 100). Larger values are clamped with a note.","schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging; follow \"next\".","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"A page of silent stations, worst first, and the groups; or a GeoJSON FeatureCollection of the stations.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}},"application/geo+json":{"schema":{"$ref":"#/components/schemas/FeatureCollection"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/health/findings":{"get":{"operationId":"getHealthFindings","summary":"Get Station Health findings","description":"Station Health for a page of stations, worst first, each as getStationHealth answers it — to plan a maintenance run: by owner, station ids, network, basin, kind or bounding box. Lists stations with a finding at min_severity or worse; with ids, every station named.","parameters":[{"name":"owner","in":"query","required":false,"description":"Station owners, comma-separated, as the Service Level Specification (or the station) names them — e.g. \"Seqwater\" or \"Bureau of Meteorology\"; \"none\" for no owner on record. The answer's owners lists them.","schema":{"type":"string","maxLength":300}},{"name":"ids","in":"query","required":false,"description":"Station ids, comma-separated, up to 100 — every one is answered, with or without findings, unless min_severity is given too.","schema":{"type":"string"}},{"name":"network","in":"query","required":false,"description":"A radio network id. See /api/v1/networks.","schema":{"type":"string"}},{"name":"basin","in":"query","required":false,"description":"Words in the Bureau's basin name for the station, e.g. \"Burdekin\".","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"A kind: rain, river, repeater or base — the same rule as /api/v1/stations.","schema":{"type":"string","enum":["rain","river","repeater","base"]}},{"name":"bbox","in":"query","required":false,"description":"A bounding box, \"west,south,east,north\" in decimal degrees — longitude first — e.g. 152.5,-28.2,153.6,-27.0.","schema":{"type":"string","pattern":"^-?\\d+(\\.\\d+)?(,-?\\d+(\\.\\d+)?){3}$"}},{"name":"min_severity","in":"query","required":false,"description":"The least severe finding a station must have to be listed: critical, warn (needs attention) or info (any; the default).","schema":{"type":"string","enum":["critical","warn","info"]}},{"name":"days","in":"query","required":false,"description":"The window Station Health works over, in days: 3, 7, 14 (default 7), as on the tab.","schema":{"type":"integer","enum":[3,7,14],"default":7}},{"name":"limit","in":"query","required":false,"description":"Rows per page, 1–100 (default 25). Larger values are clamped with a note.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging; follow \"next\".","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"A page of stations' health, worst first, and the owners in the window.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/catchments":{"get":{"operationId":"listCatchments","summary":"List catchments","description":"The 77 Queensland drainage basins with basin number, area and drainage division.","parameters":[],"responses":{"200":{"description":"Catchments.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/catchments/{id}":{"get":{"operationId":"getCatchment","summary":"Get a catchment and its stations","description":"One basin (by id or name) and a page of its stations.","parameters":[{"name":"id","in":"path","required":true,"description":"Catchment id, e.g. \"herbert\".","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Rows per page, 1–100 (default 25). Larger values are clamped with a note.","schema":{"type":"integer","minimum":1,"maximum":100,"default":25}},{"name":"offset","in":"query","required":false,"description":"Rows to skip, for paging; follow \"next\".","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"The catchment and a page of its stations.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/networks":{"get":{"operationId":"listNetworks","summary":"List networks and hubs","description":"Radio networks, maintenance hubs and Radio Mobile system presets — the ids ?network= and ?hub= take.","parameters":[],"responses":{"200":{"description":"Networks, hubs and systems.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}},"/api/v1/changelog":{"get":{"operationId":"getApiChangelog","summary":"Get the API's changes","description":"Every change to this API that someone using it would notice — a route, a field, a limit, a tool — newest first, each with its date, a plain-words summary, whether it is breaking, and links. Sign up at /api#notify to be emailed each one.","parameters":[],"responses":{"200":{"description":"The changes, newest first.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Object"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"$ref":"#/components/responses/Upstream"},"503":{"$ref":"#/components/responses/Upstream"},"504":{"$ref":"#/components/responses/Upstream"}}}}},"components":{"parameters":{"StationId":{"name":"id","in":"path","required":true,"description":"A station id — a lowercase slug such as \"abergowrie_br_al\". An all-digit id is also tried as a Bureau station number.","schema":{"type":"string","pattern":"^[A-Za-z0-9_.-]{1,64}$"}}},"responses":{"BadRequest":{"description":"A parameter is missing, malformed or out of range; detail says which.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"No such station, catchment or endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Rate limited. Wait retry_after seconds (also the Retry-After header).","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Upstream":{"description":"The database was unreachable, slow or refused; detail says which (an outage or maintenance on the database is the usual cause).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Object":{"type":"object","additionalProperties":true},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"detail":{"type":"string"},"retry_after":{"type":"integer"}},"additionalProperties":true},"StationSummary":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"string"},"name":{"type":"string"},"station_number":{"type":["string","null"]},"lat":{"type":["number","null"]},"lon":{"type":["number","null"]},"elevation_ahd_m":{"type":["number","null"]},"elevation_source":{"type":["string","null"]},"roles":{"type":"array","items":{"type":"string"}},"kinds":{"type":"array","items":{"type":"string"}},"catchments":{"type":"array","items":{"type":"object","additionalProperties":true}},"basin":{"type":["string","null"]},"stream":{"type":["string","null"]},"lga":{"type":["string","null"]},"telemetry":{"type":"object","additionalProperties":true},"sls":{"type":["object","null"],"additionalProperties":true},"has":{"type":"object","additionalProperties":true},"distance_km":{"type":"number"}}},"StationList":{"type":"object","additionalProperties":true,"properties":{"count":{"type":"integer"},"total":{"type":["integer","null"]},"limit":{"type":"integer"},"offset":{"type":"integer"},"next":{"type":["string","null"]},"stations":{"type":"array","items":{"$ref":"#/components/schemas/StationSummary"}},"notes":{"type":"array","items":{"type":"string"}}}},"FeatureCollection":{"type":"object","required":["type","features"],"additionalProperties":true,"properties":{"type":{"type":"string","enum":["FeatureCollection"]},"bbox":{"type":"array","items":{"type":"number"},"minItems":4,"maxItems":4},"features":{"type":"array","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","enum":["Feature"]},"id":{"type":"string"},"geometry":{"type":"object","properties":{"type":{"type":"string","enum":["Point"]},"coordinates":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2,"description":"[lon, lat]"}}},"properties":{"type":"object","additionalProperties":true}}}},"omitted_without_position":{"type":"object","additionalProperties":true,"properties":{"count":{"type":"integer"},"ids":{"type":"array","items":{"type":"string"}}}},"next":{"type":["string","null"]},"notes":{"type":"array","items":{"type":"string"}}}}}}}