Stability classes and sunset
What stable, beta, and internal promise, how long the period between announcement and shutdown is, and how your client recognizes a sunset on its own.
4 minute readChangesUpdated: 10/25/2026
On this page
Before you start
- For
- Anyone who operates an integration and wants to know what they can rely on and how early they learn of a shutdown.
- Prerequisite
- None
Every operation of the specification carries a class, and an operation that is being sunset announces itself in its own responses. This page says what stable, beta, and internal promise, how long the period between announcement and shutdown is, and how a client recognizes the sunset without anyone reading a page.
The three classes
Every operation carries the extension x-stability:
| Class | What it promises |
|---|---|
stable |
Path, required fields, and error codes do not change without a new version. A field can be added, none disappears. Until beta there is one exception, see below. |
beta |
Public, but young: the shape can still move until it has survived a cycle without a breaking change. Build on it, but read the notes. |
internal |
Not part of the public surface. These operations are neither in the reference nor in the specification on this page. |
The class is set, not guessed: an operation without a class aborts the generation of the public version. An unclassified route therefore never appears publicly by accident, and a public one does not silently disappear either.
What internal carries is the inside view of the house: the operator console, the bridges to the device and the display software, the inbound endpoint of the payment provider, and diagnostics. There is nothing for an organization to call there. A call ends with 403 Permission.OperatorOnly or does not reach you at all.
How a sunset works
Twelve months pass between the announcement and the shutdown of an operation, from beta on without exception (until then).
-
In the specification. The operation carries
deprecated: trueandx-sunsetwith the shutdown date. If you generate a client from the specification, you see the sunset at build time, and many generators then mark the method as deprecated. -
In every response. The operation keeps responding but carries three additional headers:
HTTP/1.1 200 OK Deprecation: true Sunset: Thu, 09 Sep 2027 00:00:00 GMT Link: </docs>; rel="deprecation" -
On the deadline. After the date from
Sunset, the operation no longer responds.
So even someone who has never read the specification sees the sunset: in the log of their own client.
Until beta: exceptions to the promise
The platform is in alpha until the end of 2026. Until beta, even routes of the stability class stable may be dropped or broken without a sunset. Every break is listed in the change notes of the train, under “Developers”, with the route and what takes its place. From beta on, the promises above apply without exception.
The train with the new analytics made use of this:
| Route | What happened |
|---|---|
GET /v1/analytics/playback, GET /v1/players/{playerId}/playback, GET /v1/media/assets/{assetId}/playback |
dropped without a sunset. The new analytics replaces them: GET /v1/analytics/overview, GET /v1/analytics/players/{playerId}/day and /plays, GET /v1/analytics/content, and POST /v1/analytics/explore |
GET /v1/analytics/insights/overview, POST /v1/analytics/insights/report |
dropped without a sunset, replaced by the overview and the ad hoc analysis |
/v1/analytics/reports and the routes below it |
changed shape: The query of a report is now that of the ad hoc analysis instead of a metric of the old measurement series, and formats exist only as csv and pdf. beta since then |
A client generated from the specification, and @szenera/client from before this train, get 404 for the dropped routes and 400 for the old report forms. What changes with each train is described under Release trains, notes, and deprecations.
What your client should do about it
| Rule | Why |
|---|---|
Watch for Deprecation in every response and log the finding once per route |
A sunset rarely hits all calls at the same time. One line per route shows exactly what you still use. |
Record Sunset and turn it into a deadline |
Twelve months are long enough to forget and short enough that it is then too late. |
Do not branch on Link |
The address leads to the reference. It is a reading aid for people, not a redirect target. |
For beta, compare the specification regularly |
See Compare the specification against your version. |
Two guards keep the policy honest: an announcement without x-sunset is an error in the build, and so is an elapsed x-sunset on a route that still responds.
Where to read the current state
| Source | What it says |
|---|---|
https://developer.szenera.com/api/openapi.json |
the public specification as of the current train, with x-stability and x-sunset per operation |
GET /v1/openapi.json on your environment |
the same information for the version that actually runs there |
| What’s new in the handbook | what changed in the interface with each train, newest first |
| The status of the platform | the current state, announced maintenance windows, and the latest incidents |
The class also appears in the reference on every operation, see Read the reference.