PrompTugal.newsStorm CharlesUpdated 12:01 UTCNew here?v0.1.1019Repo
Not a warning service. Follow IPMA, ANEPC and your local authorities. We aggregate public sources, each with its source and the time we read it.

This view is drawn in the browser from the JSON files linked below. Without JavaScript, read the tables on this page.

IPMA's open data · Warnings over time · Stations · The sea · Cities: forecast and observed · The API, mapped · What we learned · Browse the files · Licence and terms

Pick a file above: Table shows its rows, Schema its shape (keys and types, read from the file itself), Raw the text. Every file is small (under 256 KB) and served at its own address; each says which IPMA file it was made from, with that file's sha256 and the time we read it. IPMA's full responses are not in git: they are in the data store (dataset.json), and each data set's page links IPMA's live file.

FileBytesWhat it is
data/warnings.json83103Every IPMA warning above green that we have read, each with the reads that bracket it: first_read_utc (the first of our reads that carried it) and last_read_utc; gone_read_utc is the first read that no longer carried it, and 'gone' says how: ended (its window
data/classes.json4529IPMA's own names for its codes, in Portuguese and English exactly as IPMA publishes them (its spelling kept, trailing spaces trimmed): idWeatherType (significant weather), classWindSpeed (wind strength of the day) and classPrecInt (precipitation intensity). -9
data/places.json31825IPMA's places: the 25 warning areas (districts, island groups, parts of Madeira), the places it forecasts for, the coastal places of the sea forecast, and a point for each mainland municipality (from the fire-risk files, with the risk class for today and the n
data/stations.json33440IPMA's weather stations (id, name, coordinates as IPMA gives them) and whether each reported in the last 24 hours read. 'region' is ours, from the longitude.
data/observations.json128976The last 24 hours of IPMA's hourly station observations, as arrays in the order of 'hours'. t: air temperature (°C, mean of the hour); w: wind speed at 10 m (km/h; the mean, not gusts: IPMA's open data carries no gusts); d: wind direction class (1 or 9 N, 2 NE
data/observed-daily.json16205Per day and station, computed by us from IPMA's hourly observations (not an IPMA product): [hours of the day present in the 24-hour file when read, lowest hourly mean temperature (°C), highest hourly mean temperature (°C), precipitation summed over the hours p
data/sea.json13595IPMA's sea state forecast for its 12 coastal places, by place and day, as issued: each entry of a series is one version of that day's forecast, with the first of our reads that carried it (read_utc), the last (last_read_utc), and IPMA's file time (file_updated
data/cities.json60398IPMA's daily forecast for each of its 35 places, by place and day, as issued: each entry of a series is one version of that day's forecast, with the first and last of our reads that carried it and IPMA's file time. v: [tMin (°C), tMax (°C), probability of prec
data/seismic.json32694IPMA's located seismic events of the last 30 days (area 3: the Azores; area 7: the mainland and Madeira), one array per event. Times are UTC (IPMA: 'TU').
data/shellfish-zones.json22968IPMA's shellfish production zones and their harvesting status in the latest bulletin, with each zone's outline thinned by us to about 2 km (for drawing: the coastal zones trace the mainland's coast). Status and species are IPMA's.
api.json54991The map of IPMA's open data API: every endpoint IPMA documents at https://api.ipma.pt/ and every file its directory lists under /open-data/, with the address, the format, each field's meaning and unit, how often IPMA says it changes, and what the documentation
latest.json36752Every file we read from IPMA's open data, as of its latest read: the sha256 and size of IPMA's response, the UTC time we read it, IPMA's own Last-Modified header, and when we last saw it change. The responses themselves are in the data store (see dataset.json)
reads.json26233Every read of IPMA's open data by tools/ipma-read.mjs, appended: when, how many requests, which files answered with something new (changed), which were read for the first time (the count), which failed. One request every few seconds; read-only.
listing.json217458IPMA's own directory listings under https://api.ipma.pt/open-data/, as its server lists them (name, date and size are IPMA's columns; the dates carry no time zone). A listing, not a download: files are read only where sources/ipma/api.json says so. A directory
nodes.json122942Nodes from IPMA's open data for incident.entities@ to adopt: the body, each data set, the warning levels and types, the 25 warning areas, the forecast places, the coastal places, the stations and the weather types. Ids are stable (they are built from IPMA's ow
source.json9039IPMA as a source for this site: who it is, what it publishes as open data, its terms exactly as published, and how we read it. The map of its API is api.json; what we hold is latest.json.
dataset.json11146Where IPMA's full responses are kept: a data vault (SG/Send, made with sgit), never git. latest/ is overwritten by each read; a dated folder per hour (UTC) keeps every file that changed in that hour, a <file>.diff.json beside it saying what changed, and a mani
changes/city-daily.json38612What changed in IPMA's "Daily forecast up to 5 days, by place" between one of our reads and the next: counts, and up to 40 examples of each kind. "at" is when we read the new version; "last_modified" is IPMA's own header on it. The full responses of both are i
changes/climate-precipitation.json1130What changed in IPMA's "Daily precipitation by municipality" between one of our reads and the next: counts, and up to 40 examples of each kind. "at" is when we read the new version; "last_modified" is IPMA's own header on it. The full responses of both are in
changes/climate-temperature.json1127What changed in IPMA's "Daily air temperature by municipality" between one of our reads and the next: counts, and up to 40 examples of each kind. "at" is when we read the new version; "last_modified" is IPMA's own header on it. The full responses of both are i
changes/day-forecast.json59784What changed in IPMA's "Daily forecast up to 3 days, all places for one day" between one of our reads and the next: counts, and up to 40 examples of each kind. "at" is when we read the new version; "last_modified" is IPMA's own header on it. The full responses
changes/fire-risk.json2196What changed in IPMA's "Fire risk forecast up to 3 days, by municipality" between one of our reads and the next: counts, and up to 40 examples of each kind. "at" is when we read the new version; "last_modified" is IPMA's own header on it. The full responses of
changes/obs-surface.json6526What changed in IPMA's "Station observations, last 3 hours, with coordinates" between one of our reads and the next: counts, and up to 40 examples of each kind. "at" is when we read the new version; "last_modified" is IPMA's own header on it. The full response
changes/observations.json6127What changed in IPMA's "Station observations, hourly, last 24 hours" between one of our reads and the next: counts, and up to 40 examples of each kind. "at" is when we read the new version; "last_modified" is IPMA's own header on it. The full responses of both
changes/sea-forecast.json43403What changed in IPMA's "Sea state forecast up to 3 days, by day" between one of our reads and the next: counts, and up to 40 examples of each kind. "at" is when we read the new version; "last_modified" is IPMA's own header on it. The full responses of both are
changes/seismic.json96442What changed in IPMA's "Seismic events, last 30 days" between one of our reads and the next: counts, and up to 40 examples of each kind. "at" is when we read the new version; "last_modified" is IPMA's own header on it. The full responses of both are in the dat
changes/stations.json1037What changed in IPMA's "Weather stations" between one of our reads and the next: counts, and up to 40 examples of each kind. "at" is when we read the new version; "last_modified" is IPMA's own header on it. The full responses of both are in the data store unde
changes/warnings.json29436What changed in IPMA's "Weather warnings, up to 3 days" between one of our reads and the next: counts, and up to 40 examples of each kind. "at" is when we read the new version; "last_modified" is IPMA's own header on it. The full responses of both are in the d