/v1, no Api-Version header, no date
pinning. That is a commitment, not an omission: the API only changes in ways
that existing callers survive, so there is nothing to pin to.
What we will change without warning
These are safe because a tolerant client ignores what it does not recognise.- A new field on a response
- A new optional parameter on a request
- A new endpoint, or a new method on the SDK
- A new accepted value on a request enum
- A new job type
What we treat as breaking
- Removing or renaming a field, parameter, endpoint or method
- Making a response field nullable, or changing its type
- Narrowing what a request accepts
- Moving a field into or out of a union
How something goes away
Three steps, in order, and the middle one lasts.- Expand. The replacement ships alongside the old surface. Both work.
- Deprecate. The old surface is marked and keeps working. It is not slowed, throttled, or degraded.
- Contract. Removals are batched and released together in a single major.
client.team.* and the /team/* routes are deprecated today
and call exactly the same code as their replacements.
How to tell what is deprecated
- OpenAPI: the operation carries
"deprecated": truein the spec. Generators surface this. - TypeScript: the method carries
@deprecated, so your editor strikes it through and your build can warn. - Changelog: every deprecation is announced at rendobar.com/changelog.
SDK versions
@rendobar/sdk follows semantic versioning.
Majors are rare and deliberate. Publishing one requires a human to approve that
exact version number, and CI refuses to push a major to npm without it. That
guard exists because an automated release once cut a major from a stray commit
footer, and we would rather fail a release than surprise you with one.
Pin what you depend on: