# Changelog

What changed in the API and in the data behind it, newest first. One line per change:
date · licence(s) · kind · what it means for a consumer.

Kinds: **breaking** (a query or a filter that worked stops working, or answers differently),
**data** (the same query answers with different values), **additive** (new fields or queries;
nothing existing changes), **docs** (the documentation or the schema descriptions).

Keyed applications are told by e-mail before a **breaking** or **data** change lands on a licence
they use. Anonymous callers have this page.

| Date | Licence(s) | Kind | Change |
|---|---|---|---|
| 2026-09-24 | all | additive | API keys and this developer portal. `X-Api-Key` (or `?key=`) identifies an application; responses to requests without a valid key now carry `extensions.notice`. Nothing else in the response changes. |
| 2026-09-24 | trdevents | breaking | The category tree (8 top-level + 14 subcategories) was replaced by 19 flat categories. The old category ids are retired and will not be reused. A consumer filtering trdevents by category id must re-read `categories` and map its filters to the new ids; the old ids match nothing. |
| 2026-09-17 | Røros | breaking | Categories consolidated from 35 to 12. Retired ids match nothing; re-read `categories`. |
| 2026-09-14 | all | docs | The schema descriptions of `startDate`, `endDate` and the repetition dates now say what the values have always been: Norwegian local time with the UTC offset in force on that date (`+01:00` in winter, `+02:00` in summer), space-separated. The old text said "ISO format … +00", which was never true of the values. |
| 2026-08-19 | Midtre Gauldal | breaking | Categories consolidated from 34 to 12. Retired ids match nothing; re-read `categories`. |
| 2026-08-19 | all | data | `Price.price` no longer fails the whole `events` query when an organiser has written a decimal price. The value is rounded to an integer at the boundary and is `null` when it cannot be read as a number. Between 2026-07-22 and this date, one such price broke every `events` response on the affected licence. |
