Changes

What changes, and what never does.

The shapes only ever gain fields. Nothing is renamed and nothing is removed, so code you write today keeps working.

The promise

A field you read today will be there tomorrow, with the same name, the same meaning and the same type. A value we can answer with today is a value we can still answer with later. A field that is always sent keeps being always sent.

What we do is add. New fields appear, and new words appear in lists of words. So read past a field you do not recognise, and treat a word you do not know as something to skip rather than something to fail on. A consumer that does both never breaks.

A test in this codebase compares the published document with the last approved one and fails on any removal or retyping. The promise is not a policy somebody remembers; it is a build that goes red.

Every change, dated

Changes to the API
DateWhat changed
2026-09-22First release.
2026-09-23Season totals for a team, and one player's season, previous seasons and career.

If we ever have to break something

We would open a second address beside this one and leave this one answering. A change that breaks your code will not arrive at an address you already use.