Versioning

/v1 is the major contract.

/v1 fixes the major contract. We don't remove fields or change an existing field's type without /v2 — adding new fields is considered compatible.

An incompatible change will have a minimum migration period of six months, with both versions available.

Webhook endpoints (planned) keep the payload version in apiVersion, separate from the version of the route that registered them.