The whole public API lives under the **`/public/v1`** prefix, explicit in every route.

## What we promise within `/public/v1`

For as long as an integration exists under `/public/v1`, we will **never**:

- remove a field from a response,
- change an existing field's type,
- tighten a validation so that a previously valid body stops being valid.

Adding a new field to a response, a new endpoint, or a new optional filter parameter **is** compatible —
your integration should ignore fields it doesn't recognize, never fail because of them.

## What happens on a breaking change

A change that would break any of the above is born in a new router, `/public/v2`, never by modifying
`/public/v1` in place. `/public/v1` keeps working for a minimum of **6 months** after `/public/v2` is
published — during that window, every response from an endpoint marked for retirement carries the standard
headers ([RFC 8594](https://www.rfc-editor.org/rfc/rfc8594)):

```
Deprecation: true
Sunset: Wed, 01 Jul 2026 00:00:00 GMT
```

No endpoint is deprecated today — if one were, this page would list it explicitly, with its retirement date
and its replacement under `/public/v2`.