Open data API
Everything JalaNet shows is derived from public bulletins, so the derived table is public too. Both endpoints return the latest reading per reservoir, refreshed on the same hourly ingest as the dashboard, and every row carries the link to the PDF it came from.
GET /api/public/data.json
JSON, CORS-open, five-minute cache. Includes a licence string and the column contract.
GET /api/public/data.csv
CSV download with the same columns, for spreadsheets and QGIS.
Columns
Column order is a published contract: new fields are appended, existing ones are never reordered or renamed.
| Field | Note |
|---|---|
| slug | — |
| name | — |
| district | — |
| agency | — |
| river | — |
| basin | — |
| latitude | — |
| longitude | — |
| frl_m | — |
| capacity_mcm | — |
| water_level_m | Level normalised to metres. Use this for cross-dam comparison. |
| level_native | Level exactly as printed in the bulletin, in unit_native (m or ft). |
| unit_native | — |
| frl_native | — |
| storage_pct | — |
| live_storage_mcm | — |
| inflow_cumecs | — |
| outflow_cumecs | — |
| rainfall_mm | — |
| measured_blue_level_m | — |
| measured_orange_level_m | — |
| measured_red_level_m | — |
| measured_rule_level_m | — |
| official_state | KSDMA five-state code: red, orange, blue, yellow (controlled release) or none. |
| alert_level | — |
| has_official_levels | False when the bulletin publishes no complete blue/orange/red set. |
| remarks | — |
| report_time | Timestamp printed on the bulletin — not the time we fetched it. |
| measurement_source | — |
| measurement_pdf_url | Direct link to the source PDF for that row. |
| measurement_fetched_at | When JalaNet downloaded the bulletin. |
Licence and limits
Derived from public KSDMA / KSEB daily reservoir bulletins and Open-Meteo forecasts. Free to reuse with attribution to JalaNet and the originating agency. Not an official government feed.
JalaNet is in beta. For legally operative decisions use the originating KSDMA / KSEB bulletin, linked in the measurement_pdf_url field of every row. Terms are explained in the knowledge section.