{
 "about": "Every 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), never in git.",
 "source": "https://api.ipma.pt/open-data/",
 "by": "incident.ipma@web-summit.dinis",
 "updated": "2026-11-11T11:50:38Z",
 "files": {
  "distrits-islands.json": {
   "endpoint": "places",
   "url": "https://api.ipma.pt/open-data/distrits-islands.json",
   "status": 200,
   "read_utc": "2026-11-11T11:47:30Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:20Z",
   "bytes": 10071,
   "sha256": "fe67afbdef8527b704b5d15044441787a8fb281a2b80111472004cf05f5d3cd9",
   "last_modified": "2021-12-07T14:48:28Z",
   "etag": "W/\"3de-2757-5d28f776204a4\"",
   "changed_seen_from": "2026-11-11T11:47:30Z"
  },
  "sea-locations.json": {
   "endpoint": "sea-places",
   "url": "https://api.ipma.pt/open-data/sea-locations.json",
   "status": 200,
   "read_utc": "2026-11-11T11:47:32Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:23Z",
   "bytes": 2268,
   "sha256": "fe0ffd2801bb86206c8ae1ab676d019d998965aaffe81fcd880fc0855c1bf4f3",
   "last_modified": "2020-02-04T12:21:27Z",
   "etag": "W/\"218d-8dc-59dbf1439e3a8\"",
   "changed_seen_from": "2026-11-11T11:47:32Z"
  },
  "observation/meteorology/stations/stations.json": {
   "endpoint": "stations",
   "url": "https://api.ipma.pt/open-data/observation/meteorology/stations/stations.json",
   "status": 200,
   "read_utc": "2026-11-11T11:47:35Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:26Z",
   "bytes": 49864,
   "sha256": "cd795de81f53b2c6f2935be522314f582610412217d548769747ecef2307dd90",
   "last_modified": "2026-11-11T11:35:01Z",
   "etag": "W/\"23c-c2c8-65ffe95e3a1f7\"",
   "changed_seen_from": "2026-11-11T11:47:35Z",
   "changed_utc": "2026-11-11T04:46:12Z",
   "changes": 1
  },
  "weather-type-classe.json": {
   "endpoint": "weather-types",
   "url": "https://api.ipma.pt/open-data/weather-type-classe.json",
   "status": 200,
   "read_utc": "2026-11-11T11:47:38Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:29Z",
   "bytes": 4954,
   "sha256": "8727e4e98344696bbb086680cebd165b3d5d52ec19f96ec781bde5c69efe1a16",
   "last_modified": "2024-06-07T09:55:03Z",
   "etag": "W/\"5ad-135a-61a49cb1eebc0\"",
   "changed_seen_from": "2026-11-11T11:47:38Z"
  },
  "wind-speed-daily-classe.json": {
   "endpoint": "wind-classes",
   "url": "https://api.ipma.pt/open-data/wind-speed-daily-classe.json",
   "status": 200,
   "read_utc": "2026-11-11T11:47:41Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:32Z",
   "bytes": 644,
   "sha256": "c747a9932e4c866165568585ffc6b1754b94ab5858e0ddd8e1085fbaba17867c",
   "last_modified": "2018-01-18T17:50:25Z",
   "etag": "W/\"196e-284-56310993e6c70\"",
   "changed_seen_from": "2026-11-11T11:47:41Z"
  },
  "precipitation-classe.json": {
   "endpoint": "precipitation-classes",
   "url": "https://api.ipma.pt/open-data/precipitation-classe.json",
   "status": 200,
   "read_utc": "2026-11-11T11:47:44Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:35Z",
   "bytes": 578,
   "sha256": "208d4a1c7c9f2e4336af82040375ab463e0f7074fe641912b2a20821b49b482c",
   "last_modified": "2019-11-06T17:27:12Z",
   "etag": "W/\"5b2-242-596b0dbf89920\"",
   "changed_seen_from": "2026-11-11T11:47:44Z"
  },
  "forecast/meteorology/icons_ipma_weather.zip": {
   "endpoint": "icons",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/icons_ipma_weather.zip",
   "status": 200,
   "read_utc": "2026-11-11T11:47:47Z",
   "reads": 11,
   "bytes": 179447,
   "last_modified": "2022-05-12T11:47:02Z",
   "etag": "\"331-2bcf7-5decf1dbc2e1c\"",
   "sha256": null,
   "note": "not downloaded (headers only)"
  },
  "forecast/warnings/warnings_www.json": {
   "endpoint": "warnings",
   "url": "https://api.ipma.pt/open-data/forecast/warnings/warnings_www.json",
   "status": 200,
   "read_utc": "2026-11-11T11:47:51Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:42Z",
   "bytes": 46303,
   "sha256": "55a16610bb5737e1b2cfabb31c4fa0a9a332f8f35da40af4a457610f1cae38e5",
   "last_modified": "2026-11-11T11:15:02Z",
   "etag": "W/\"17d1-b4df-65ffe4e71ae79\"",
   "changed_seen_from": "2026-11-11T11:47:51Z",
   "changed_utc": "2026-11-11T10:48:22Z",
   "changes": 5
  },
  "forecast/meteorology/cities/daily/1010500.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1010500.json",
   "status": 200,
   "read_utc": "2026-11-11T11:47:53Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:44Z",
   "bytes": 1195,
   "sha256": "70013dff20d1f3cafd97b136b9c47ffe88dc23675fdce834f35d775750543d4a",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"3ba-4ab-65ffe87a4ef60\"",
   "changed_seen_from": "2026-11-11T11:47:53Z",
   "changed_utc": "2026-11-11T11:47:53Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1020500.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1020500.json",
   "status": 200,
   "read_utc": "2026-11-11T11:47:56Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:47Z",
   "bytes": 1192,
   "sha256": "d488d7d8065d2f51ecc25b317470e97bb4b6cf7a9a8a3f42e5bd757973007d18",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"573-4a8-65ffe87a54d20\"",
   "changed_seen_from": "2026-11-11T11:47:56Z",
   "changed_utc": "2026-11-11T11:47:56Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1030300.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1030300.json",
   "status": 200,
   "read_utc": "2026-11-11T11:47:59Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:50Z",
   "bytes": 1195,
   "sha256": "971520ceb94c19b4a399f10d16a02a524907ce0427e8d059ebdc2cac9899ba8f",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"17b9-4ab-65ffe87a42826\"",
   "changed_seen_from": "2026-11-11T11:47:59Z",
   "changed_utc": "2026-11-11T11:47:59Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1030800.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1030800.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:02Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:53Z",
   "bytes": 1196,
   "sha256": "04ab55e29232e2bda7eb050764eae2f688ce2c6d0dfdd124a83dda7b60de90a6",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"238-4ac-65ffe87a3e5be\"",
   "changed_seen_from": "2026-11-11T11:48:02Z",
   "changed_utc": "2026-11-11T11:48:02Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1040200.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1040200.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:05Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:56Z",
   "bytes": 1191,
   "sha256": "cce2dedacc77cf535ac2292dd558d13a86be669a89484cd6304da4e206e49472",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"1838-4a7-65ffe87a51a58\"",
   "changed_seen_from": "2026-11-11T11:48:05Z",
   "changed_utc": "2026-11-11T11:48:05Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1050200.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1050200.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:08Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:19:59Z",
   "bytes": 1197,
   "sha256": "3e5a8193a4d0be649efa14c51e81e35f7655233d2eefb35a3408a4ba70a30f3b",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"202b-4ad-65ffe87a56490\"",
   "changed_seen_from": "2026-11-11T11:48:08Z",
   "changed_utc": "2026-11-11T11:48:08Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1060300.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1060300.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:11Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:02Z",
   "bytes": 1193,
   "sha256": "9a7d1ae06f8331d7fc050065a2b1b344274e1b900835a37c31f36469e2c0b9e4",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"202c-4a9-65ffe87a53d80\"",
   "changed_seen_from": "2026-11-11T11:48:11Z",
   "changed_utc": "2026-11-11T11:48:11Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1070500.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1070500.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:14Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:05Z",
   "bytes": 1194,
   "sha256": "1bbb8706372000838715092c3ab636fdafd892814533fb7d2b5ddfc3449debaa",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"203f-4aa-65ffe87a44767\"",
   "changed_seen_from": "2026-11-11T11:48:14Z",
   "changed_utc": "2026-11-11T11:48:14Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1080500.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1080500.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:17Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:08Z",
   "bytes": 1189,
   "sha256": "352a9e02669b6c83b0f7c9981e23b1068eb6874745d61eb6b165c30cdd7ce7c2",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2040-4a5-65ffe87a49d57\"",
   "changed_seen_from": "2026-11-11T11:48:17Z",
   "changed_utc": "2026-11-11T11:48:17Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1081505.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1081505.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:20Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:11Z",
   "bytes": 1191,
   "sha256": "c71db41e9ce2bc6767573f7711ad0b194de6b161aaa4ab5b7740ee99185d9133",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2041-4a7-65ffe87a437c7\"",
   "changed_seen_from": "2026-11-11T11:48:20Z",
   "changed_utc": "2026-11-11T11:48:20Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1081100.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1081100.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:23Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:14Z",
   "bytes": 1190,
   "sha256": "89306d0806358d3a5c264dd1573d811d6d6284dd437510af3b40e39e882d4374",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2b9-4a6-65ffe87a3d61e\"",
   "changed_seen_from": "2026-11-11T11:48:23Z",
   "changed_utc": "2026-11-11T11:48:23Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1080800.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1080800.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:26Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:17Z",
   "bytes": 1190,
   "sha256": "4191b8d19f9c06c2948a9cd62d1cdfd1b0806ea4097ded33f1ebc9c3ae7b654b",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"481-4a6-65ffe87a59758\"",
   "changed_seen_from": "2026-11-11T11:48:26Z",
   "changed_utc": "2026-11-11T11:48:26Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1090700.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1090700.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:29Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:20Z",
   "bytes": 1187,
   "sha256": "59e0de7b194b751c9c4ae46aad46b15066b9c98b6b0ba76e873f622189c5d497",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2042-4a3-65ffe87a52de0\"",
   "changed_seen_from": "2026-11-11T11:48:29Z",
   "changed_utc": "2026-11-11T11:48:29Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1090821.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1090821.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:32Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:23Z",
   "bytes": 1187,
   "sha256": "134a2ac37a3efcffb7dc66bcf78cb53eab8f4b43ee144c17a3690f208afd4b8a",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"3ce-4a3-65ffe87a39b86\"",
   "changed_seen_from": "2026-11-11T11:48:32Z",
   "changed_utc": "2026-11-11T11:48:32Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1100900.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1100900.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:35Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:26Z",
   "bytes": 1196,
   "sha256": "0f0fdac2debcd5721debd3cfd7f2335258e3e5bea5dec9e7c1342c2b68c6a388",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2043-4ac-65ffe87a5a6f9\"",
   "changed_seen_from": "2026-11-11T11:48:35Z",
   "changed_utc": "2026-11-11T11:48:35Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1110600.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1110600.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:38Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:29Z",
   "bytes": 1192,
   "sha256": "999cb5caec072ecdf18dc5d4e855c95cc0143fa7ff48e2267a5191c02f0e26c5",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"204e-4a8-65ffe87a489cf\"",
   "changed_seen_from": "2026-11-11T11:48:38Z",
   "changed_utc": "2026-11-11T11:48:38Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1121400.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1121400.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:41Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:32Z",
   "bytes": 1197,
   "sha256": "bc7d1800ec0585556dfd19f15480071b3be852df510466e6e56b89027d09adb7",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"204f-4ad-65ffe87a5fce9\"",
   "changed_seen_from": "2026-11-11T11:48:41Z",
   "changed_utc": "2026-11-11T11:48:41Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1131200.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1131200.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:44Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:35Z",
   "bytes": 1196,
   "sha256": "a6db6762816742bdcc36e073d532199f0eafdeb0e0afae2aa94de9c47ccf25d3",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2050-4ac-65ffe87a4c07f\"",
   "changed_seen_from": "2026-11-11T11:48:44Z",
   "changed_utc": "2026-11-11T11:48:44Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1141600.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1141600.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:47Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:38Z",
   "bytes": 1192,
   "sha256": "65a9aef9252d1ffde136b33461a97004108eb897384f36bedc5e90637514b639",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2051-4a8-65ffe87a38415\"",
   "changed_seen_from": "2026-11-11T11:48:47Z",
   "changed_utc": "2026-11-11T11:48:47Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1151200.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1151200.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:50Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:41Z",
   "bytes": 1191,
   "sha256": "046d8a163e6e579bd5891e8a7b2d2b813bd25bbd3549c44e359ce848220ec8c9",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2053-4a7-65ffe87a4dbd7\"",
   "changed_seen_from": "2026-11-11T11:48:50Z",
   "changed_utc": "2026-11-11T11:48:50Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1151300.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1151300.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:53Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:44Z",
   "bytes": 1192,
   "sha256": "2df2759521e0411f029691d45803d0e5fd69cd799754958fd23d4843b187c641",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2054-4a8-65ffe87a41887\"",
   "changed_seen_from": "2026-11-11T11:48:53Z",
   "changed_utc": "2026-11-11T11:48:53Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1160900.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1160900.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:56Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:47Z",
   "bytes": 1195,
   "sha256": "d371c927e64f5c9b3e7aac1a533ec4740adba60a7e35db88e45cf19ef7636b04",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2056-4ab-65ffe87a5ca21\"",
   "changed_seen_from": "2026-11-11T11:48:56Z",
   "changed_utc": "2026-11-11T11:48:56Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1171400.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1171400.json",
   "status": 200,
   "read_utc": "2026-11-11T11:48:59Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:50Z",
   "bytes": 1193,
   "sha256": "0b33810c8bfb4291e5223db251861393de7c02cc09eea718599873106383143d",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2058-4a9-65ffe87a5e191\"",
   "changed_seen_from": "2026-11-11T11:48:59Z",
   "changed_utc": "2026-11-11T11:48:59Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/1182300.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1182300.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:02Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:53Z",
   "bytes": 1193,
   "sha256": "56f43825d5f47f4493f345fe87746dbeb76ee56ad1198f62cf364921abd3f6c6",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2059-4a9-65ffe87a587b9\"",
   "changed_seen_from": "2026-11-11T11:49:02Z",
   "changed_utc": "2026-11-11T11:49:02Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/2310300.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/2310300.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:05Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:56Z",
   "bytes": 1136,
   "sha256": "4a74960b04b13b962c5486964d2f8c793ce49269d39c36b66a046e9d6c6f286b",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"205a-470-65ffe87a466a7\"",
   "changed_seen_from": "2026-11-11T11:49:05Z",
   "changed_utc": "2026-11-11T11:49:05Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/2320100.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/2320100.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:08Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:20:59Z",
   "bytes": 1116,
   "sha256": "d7c0d3a873db57ce9a2f56beba2ea7bfed01b9fc5ba1aee449f3d4faf648394b",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"205f-45c-65ffe87a57818\"",
   "changed_seen_from": "2026-11-11T11:49:08Z",
   "changed_utc": "2026-11-11T11:49:08Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/3410100.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/3410100.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:11Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:02Z",
   "bytes": 1137,
   "sha256": "6d3e771daec89ed54f5ff39ea1dc685cb2cad01a6f15edb66a25049a047d88aa",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2c4-471-65ffe87a4acf7\"",
   "changed_seen_from": "2026-11-11T11:49:11Z",
   "changed_utc": "2026-11-11T11:49:11Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/3420300.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/3420300.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:14Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:05Z",
   "bytes": 1179,
   "sha256": "dad441f777677faaaac264a1f59d3364f32d71dd52177a508c0fa9027a2b16cf",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2060-49b-65ffe87a4ff00\"",
   "changed_seen_from": "2026-11-11T11:49:14Z",
   "changed_utc": "2026-11-11T11:49:14Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/3430100.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/3430100.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:17Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:08Z",
   "bytes": 1197,
   "sha256": "cfbaa0bad8729345c8f77655e10145dea8f781d24f4b36942ef788c56d6bee17",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2061-4ad-65ffe87a61071\"",
   "changed_seen_from": "2026-11-11T11:49:17Z",
   "changed_utc": "2026-11-11T11:49:17Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/3440100.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/3440100.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:20Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:11Z",
   "bytes": 1181,
   "sha256": "2c564bf03422c76b16db9795837d195caf5e23e7e6fd22a6f8b88e76781c099a",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"260d-49d-65ffe87a47a2f\"",
   "changed_seen_from": "2026-11-11T11:49:20Z",
   "changed_utc": "2026-11-11T11:49:20Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/3450200.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/3450200.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:23Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:14Z",
   "bytes": 1199,
   "sha256": "ef17a39d52ea05b1a07e01458b62438c34313a4dc01cd1006a6c19e2610076de",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2111-4af-65ffe87a3f55e\"",
   "changed_seen_from": "2026-11-11T11:49:23Z",
   "changed_utc": "2026-11-11T11:49:23Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/3460200.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/3460200.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:26Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:17Z",
   "bytes": 1201,
   "sha256": "8d6ffb5bb8ff66d05b0f7e5e41ce21414b997ea61e8681b26f9776c81920c674",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2064-4b1-65ffe87a5ba81\"",
   "changed_seen_from": "2026-11-11T11:49:26Z",
   "changed_utc": "2026-11-11T11:49:26Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/3470100.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/3470100.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:29Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:20Z",
   "bytes": 1180,
   "sha256": "7bf4504310e47ac5d09a6505fe61d07a9548f16cf7858f40de300b6662cfea04",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2062-49c-65ffe87a408e6\"",
   "changed_seen_from": "2026-11-11T11:49:29Z",
   "changed_utc": "2026-11-11T11:49:29Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/3480200.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/3480200.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:32Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:23Z",
   "bytes": 1181,
   "sha256": "65299e59afe722aa35a0f7499d3d3aabedacf7eef3bf05a8339b08fe4588979f",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2063-49d-65ffe87a3bac6\"",
   "changed_seen_from": "2026-11-11T11:49:32Z",
   "changed_utc": "2026-11-11T11:49:32Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/3490100.json": {
   "endpoint": "city-daily",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/3490100.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:35Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:26Z",
   "bytes": 1162,
   "sha256": "624d70299e6dc183cb6c4b9fd12a575988ed8ac9325fa8de36d06478812a66ae",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"2608-48a-65ffe87a45707\"",
   "changed_seen_from": "2026-11-11T11:49:35Z",
   "changed_utc": "2026-11-11T11:49:35Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/hp-daily-forecast-day0.json": {
   "endpoint": "day-forecast",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/hp-daily-forecast-day0.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:38Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:29Z",
   "bytes": 6919,
   "sha256": "3c7ffc3a43588b9ff48215ad59010f6fa53f967b44fc16f04332bd235c182e28",
   "last_modified": "2026-11-11T11:31:03Z",
   "etag": "W/\"241-1b07-65ffe87b3c455\"",
   "changed_seen_from": "2026-11-11T11:49:38Z",
   "changed_utc": "2026-11-11T11:49:38Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/hp-daily-forecast-day1.json": {
   "endpoint": "day-forecast",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/hp-daily-forecast-day1.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:41Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:32Z",
   "bytes": 6870,
   "sha256": "eee25bfb6ccdda72ea3cdeeab2ec9dbcbdc0cb84ac547c6c0d324c02d4838727",
   "last_modified": "2026-11-11T11:31:03Z",
   "etag": "W/\"2065-1ad6-65ffe87b5e350\"",
   "changed_seen_from": "2026-11-11T11:49:41Z",
   "changed_utc": "2026-11-11T11:49:41Z",
   "changes": 9
  },
  "forecast/meteorology/cities/daily/hp-daily-forecast-day2.json": {
   "endpoint": "day-forecast",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/cities/daily/hp-daily-forecast-day2.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:44Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:35Z",
   "bytes": 6796,
   "sha256": "46dc609a73d20e0ecc9e6d835c60df9bde85211a163b748ed2b4fca85a18ec2d",
   "last_modified": "2026-11-11T11:31:03Z",
   "etag": "W/\"206b-1a8c-65ffe87b7c7b3\"",
   "changed_seen_from": "2026-11-11T11:49:44Z",
   "changed_utc": "2026-11-11T11:49:44Z",
   "changes": 9
  },
  "forecast/oceanography/daily/hp-daily-sea-forecast-day0.json": {
   "endpoint": "sea-forecast",
   "url": "https://api.ipma.pt/open-data/forecast/oceanography/daily/hp-daily-sea-forecast-day0.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:47Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:38Z",
   "bytes": 3277,
   "sha256": "5ab2e07e8a6324ec54fef42017c41cd82a85b02f6c77f9eca7c63e40d3990978",
   "last_modified": "2026-11-11T11:31:01Z",
   "etag": "W/\"261f-ccd-65ffe879b370a\"",
   "changed_seen_from": "2026-11-11T11:49:47Z",
   "changed_utc": "2026-11-11T11:49:47Z",
   "changes": 9
  },
  "forecast/oceanography/daily/hp-daily-sea-forecast-day1.json": {
   "endpoint": "sea-forecast",
   "url": "https://api.ipma.pt/open-data/forecast/oceanography/daily/hp-daily-sea-forecast-day1.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:50Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:41Z",
   "bytes": 3274,
   "sha256": "28e7ac461c1d4098d2d96acf11b50d849f19f27c4f3c6ba268b0c9363673606d",
   "last_modified": "2026-11-11T11:31:01Z",
   "etag": "W/\"31d9-cca-65ffe879d84e5\"",
   "changed_seen_from": "2026-11-11T11:49:50Z",
   "changed_utc": "2026-11-11T11:49:50Z",
   "changes": 9
  },
  "forecast/oceanography/daily/hp-daily-sea-forecast-day2.json": {
   "endpoint": "sea-forecast",
   "url": "https://api.ipma.pt/open-data/forecast/oceanography/daily/hp-daily-sea-forecast-day2.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:53Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:44Z",
   "bytes": 3273,
   "sha256": "65f3f0cfdde61778ed0280d20529ba3c8aad3ef048b0f584c38da5f767263246",
   "last_modified": "2026-11-11T11:31:01Z",
   "etag": "W/\"31da-cc9-65ffe879fe648\"",
   "changed_seen_from": "2026-11-11T11:49:53Z",
   "changed_utc": "2026-11-11T11:49:53Z",
   "changes": 9
  },
  "forecast/meteorology/uv/uv.json": {
   "endpoint": "uv",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/uv/uv.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:56Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:47Z",
   "bytes": 16080,
   "sha256": "41613bd890e6e05f68405eb2918073cfa6c1595aaafb3201eded548a4c8794f4",
   "last_modified": "2026-11-11T11:00:27Z",
   "etag": "W/\"260c-3ed0-65ffe1a4b3a03\"",
   "changed_seen_from": "2026-11-11T11:49:56Z"
  },
  "forecast/meteorology/rcm/rcm-d0.json": {
   "endpoint": "fire-risk",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/rcm/rcm-d0.json",
   "status": 200,
   "read_utc": "2026-11-11T11:49:59Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:50Z",
   "bytes": 24302,
   "sha256": "dc11d3e2a07a18c1b54048e4386b97730e3dcf9de45ecfeb59efc53e54a45314",
   "last_modified": "2026-11-11T09:35:01Z",
   "etag": "W/\"1b0c-5eee-65ffce8c4806b\"",
   "changed_seen_from": "2026-11-11T11:49:59Z",
   "changed_utc": "2026-11-11T09:55:35Z",
   "changes": 1
  },
  "forecast/meteorology/rcm/rcm-d1.json": {
   "endpoint": "fire-risk",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/rcm/rcm-d1.json",
   "status": 200,
   "read_utc": "2026-11-11T11:50:02Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:53Z",
   "bytes": 24302,
   "sha256": "9704f664f01cc3d7b5d8aa4716362d6a584c09d553ad944afa98cedf2a074d22",
   "last_modified": "2026-11-11T09:35:02Z",
   "etag": "W/\"2034-5eee-65ffce8cdd71a\"",
   "changed_seen_from": "2026-11-11T11:50:02Z",
   "changed_utc": "2026-11-11T09:55:38Z",
   "changes": 1
  },
  "forecast/meteorology/rcm/rcm-d2.json": {
   "endpoint": "fire-risk",
   "url": "https://api.ipma.pt/open-data/forecast/meteorology/rcm/rcm-d2.json",
   "status": 200,
   "read_utc": "2026-11-11T11:50:05Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:21:56Z",
   "bytes": 24302,
   "sha256": "bd2c7ca4a4b72ccf8004cd14544709a3471a0c0211fcdf218d1acbaabbe29fd1",
   "last_modified": "2026-11-11T09:35:02Z",
   "etag": "W/\"8e6-5eee-65ffce8d59b6d\"",
   "changed_seen_from": "2026-11-11T11:50:05Z",
   "changed_utc": "2026-11-11T09:55:41Z",
   "changes": 1
  },
  "observation/meteorology/stations/observations.json": {
   "endpoint": "observations",
   "url": "https://api.ipma.pt/open-data/observation/meteorology/stations/observations.json",
   "status": 200,
   "read_utc": "2026-11-11T11:50:09Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:22:00Z",
   "bytes": 1063281,
   "sha256": "2c1bbcb0074102ba20764033a14cb7697a36a43f9fca69a42f3fba5c9ef88bb1",
   "last_modified": "2026-11-11T11:35:03Z",
   "etag": "W/\"463-103971-65ffe95ff28ed\"",
   "changed_seen_from": "2026-11-11T11:50:09Z",
   "changed_utc": "2026-11-11T11:50:09Z",
   "changes": 9
  },
  "observation/meteorology/stations/obs-surface.geojson": {
   "endpoint": "obs-surface",
   "url": "https://api.ipma.pt/open-data/observation/meteorology/stations/obs-surface.geojson",
   "status": 200,
   "read_utc": "2026-11-11T11:50:11Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:22:03Z",
   "bytes": 435978,
   "sha256": "a86e338745dc24494ba293a32492189d29c59e57d4177d55fa9145d504179544",
   "last_modified": "2026-11-11T11:31:02Z",
   "etag": "W/\"8e7-6a70a-65ffe87ab5fd9\"",
   "changed_seen_from": "2026-11-11T11:50:11Z",
   "changed_utc": "2026-11-11T11:50:11Z",
   "changes": 9
  },
  "observation/seismic/3.json": {
   "endpoint": "seismic",
   "url": "https://api.ipma.pt/open-data/observation/seismic/3.json",
   "status": 200,
   "read_utc": "2026-11-11T11:50:14Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:22:05Z",
   "bytes": 36651,
   "sha256": "1f4ac280e5575a6db5428135701925d4c7b19d838b835855f1f1f31cfffb38ed",
   "last_modified": "2026-11-11T11:36:02Z",
   "etag": "W/\"206e-8f2b-65ffe9986e69f\"",
   "changed_seen_from": "2026-11-11T11:50:14Z",
   "changed_utc": "2026-11-11T11:50:14Z",
   "changes": 9
  },
  "observation/seismic/7.json": {
   "endpoint": "seismic",
   "url": "https://api.ipma.pt/open-data/observation/seismic/7.json",
   "status": 200,
   "read_utc": "2026-11-11T11:50:17Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:22:08Z",
   "bytes": 109382,
   "sha256": "bc4d90b0e4899814c5e3d31c649ecdf1855c3d5ca5c67e7adaa2dee9f6cba882",
   "last_modified": "2026-11-11T11:36:02Z",
   "etag": "W/\"2070-1ab46-65ffe9988ceea\"",
   "changed_seen_from": "2026-11-11T11:50:17Z",
   "changed_utc": "2026-11-11T11:50:17Z",
   "changes": 9
  },
  "observation/climate/precipitation/prec-p1d-continental-obssup-idw-concelhos-20d.csv": {
   "endpoint": "climate-precipitation",
   "url": "https://api.ipma.pt/open-data/observation/climate/precipitation/prec-p1d-continental-obssup-idw-concelhos-20d.csv",
   "status": 200,
   "read_utc": "2026-11-11T11:50:21Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:22:12Z",
   "bytes": 635427,
   "sha256": "d74de55d629a750a7a4a178376df2962a3b46af2cd90aa532417b153581df3cb",
   "last_modified": "2026-11-11T03:10:01Z",
   "etag": "\"20be3-9b223-65ff787de4773\"",
   "changed_seen_from": "2026-11-11T11:50:21Z",
   "changed_utc": "2026-11-11T03:42:05Z",
   "changes": 1
  },
  "observation/climate/temperature/t2m-p1d-continental-obssup-idw-concelhos-20d.csv": {
   "endpoint": "climate-temperature",
   "url": "https://api.ipma.pt/open-data/observation/climate/temperature/t2m-p1d-continental-obssup-idw-concelhos-20d.csv",
   "status": 200,
   "read_utc": "2026-11-11T11:50:24Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:22:15Z",
   "bytes": 896257,
   "sha256": "c5c2b95c8184dff28e838c898370126628c25278bade12b5fbe69804d91b7391",
   "last_modified": "2026-11-11T03:10:01Z",
   "etag": "\"20be6-dad01-65ff787de820c\"",
   "changed_seen_from": "2026-11-11T11:50:24Z",
   "changed_utc": "2026-11-11T03:42:08Z",
   "changes": 1
  },
  "observation/climate/evapotranspiration/et0-p1d-continental-obssup-idw-20d-concelhos.csv": {
   "endpoint": "climate-evapotranspiration",
   "url": "https://api.ipma.pt/open-data/observation/climate/evapotranspiration/et0-p1d-continental-obssup-idw-20d-concelhos.csv",
   "status": 404,
   "read_utc": "2026-11-11T11:50:26Z",
   "reads": 11
  },
  "observation/biology/bivalves/CI_SNMB.geojson": {
   "endpoint": "bivalves",
   "url": "https://api.ipma.pt/open-data/observation/biology/bivalves/CI_SNMB.geojson",
   "status": 200,
   "read_utc": "2026-11-11T11:50:30Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:22:21Z",
   "bytes": 3411715,
   "sha256": "1f5ee7e1f1445d9be42cee1a81d081d5d1d6602f55424ef6526b5990be66b6bf",
   "last_modified": "2026-11-09T16:20:40Z",
   "etag": "W/\"215f-340f03-65fda57c34f7d\"",
   "changed_seen_from": "2026-11-11T11:50:30Z"
  },
  "06.json": {
   "endpoint": "district-06",
   "url": "https://api.ipma.pt/open-data/06.json",
   "status": 200,
   "read_utc": "2026-11-11T11:50:36Z",
   "reads": 11,
   "first_read_utc": "2026-11-11T02:22:23Z",
   "bytes": 277,
   "sha256": "d3541da8f4ae41bf5b46244ea418c6a6fdf9dd08876643a2a901709a4631146b",
   "last_modified": "2018-02-27T16:20:00Z",
   "etag": "W/\"3a1-115-56633ff8902ab\"",
   "changed_seen_from": "2026-11-11T11:50:36Z"
  },
  "zonas.gpkg": {
   "endpoint": "zones-geopackage",
   "url": "https://api.ipma.pt/open-data/zonas.gpkg",
   "status": 200,
   "read_utc": "2026-11-11T11:50:38Z",
   "reads": 11,
   "bytes": null,
   "last_modified": "2024-06-19T10:01:43Z",
   "etag": "W/\"39d-3d24000-61b3b490eefc0\"",
   "sha256": null,
   "note": "not downloaded (headers only)"
  },
  "observation/climate/evapotranspiration/et0-p1d-continental-obssup-idw-concelhos-20d.csv": {
   "endpoint": "climate-evapotranspiration-listed",
   "url": "https://api.ipma.pt/open-data/observation/climate/evapotranspiration/et0-p1d-continental-obssup-idw-concelhos-20d.csv",
   "status": 200,
   "read_utc": "2026-11-11T11:50:32Z",
   "reads": 10,
   "bytes": 431062,
   "last_modified": "2026-06-20T19:12:29Z",
   "etag": "\"3bf-693d6-654b430c9f0b6\"",
   "sha256": null,
   "note": "not downloaded (headers only)"
  }
 }
}
