Versioning

The version is in the path

Every address starts with /api/v1. A change that would break a working integration gets a new prefix; v1 keeps answering while both exist.

Changes we make inside v1

  • New endpoints.
  • New optional query parameters.
  • New fields on objects, and new keys in meta.
  • New values in lists that already grow, such as genres and roles.
  • Reworded error messages (codes stay).

What counts as breaking

  • Removing or renaming a field, parameter or endpoint.
  • Changing a field’s type or meaning.
  • Changing an error code or status for the same situation.

Each of these is announced in the changelog before it happens.

Building for it

  • Ignore fields you do not know.
  • Do not assume a list of keys, such as genres, is complete forever.
  • Branch on codes, never on message text.