Versioning and deprecation
How the Sleevy API changes, and how you find out before it does.
The Sleevy REST API is versioned in the URL. Every resource route lives under
/v1, and the version that answered a request is stated on the response:
API-Version: 1.0.0What can change inside v1
v1 grows, it does not shift underfoot. Inside a version Sleevy may:
- add a new endpoint;
- add a new optional request field or query parameter;
- add a new field to a response body; and
- add a new value to a list that is documented as open-ended.
Write your client so those are non-events: ignore response fields you do not recognize, and do not fail on an unexpected enum value. Everything Sleevy adds is additive precisely so a client written this way keeps working.
What will not change inside v1
Within v1, Sleevy will not remove an endpoint, remove a response field, rename
anything, tighten a validation rule, or change the meaning of a value you are
already receiving. A change of that kind is a v2.
How a deprecation is announced
When an operation is scheduled for removal, it says so on every response it serves, so a client finds out from traffic it is already making rather than from a changelog it has to remember to read:
API-Version: 1.0.0
Deprecation: @1793491200
Sunset: Wed, 01 Jul 2026 00:00:00 GMT
Link: <https://sleevy.app/docs/versioning>; rel="deprecation"; type="text/html"
Link: <https://api.sleevy.app/v1/saved-items/{id}/read-state>; rel="successor-version"Deprecation(RFC 9745) is when the retirement was announced.Sunset(RFC 8594) is the date the operation stops answering.- The
successor-versionlink is what to call instead.
The operation is also marked deprecated: true in the
OpenAPI document, so a generated client picks
it up at build time.
The promise
At least six months pass between the Deprecation date and the Sunset
date. Nothing is removed without that window, and the window is never shortened
once announced.
Nothing is deprecated today. Every operation in v1 is current.
If a security problem forces a faster change, Sleevy will say so explicitly on this page rather than quietly compressing the window.
Watching for it
The cheapest check is to log the Deprecation header whenever it appears:
const response = await fetch("https://api.sleevy.app/v1/saved-items", {
headers: { Authorization: `Bearer ${process.env.SLEEVY_API_KEY}` },
})
if (response.headers.get("Deprecation")) {
console.warn(
"Sleevy endpoint deprecated, sunset",
response.headers.get("Sunset"),
)
}An agent should treat a Sunset date as a reason to re-read the
OpenAPI document and move to the successor,
not as a reason to stop making the call.