Versioning and Lifecycle
/v4 is the version of all of Zuplo's API, not of one subsystem. Stable v4
surfaces only change additively: anything that would break a client is added next
to the old surface instead.
One version for the whole API
The shared rule VER-1 versions per subsystem. That is exactly how customers ended up with monetization v1, v2 and v3 next to API keys v1. v4 deliberately departs from it: one prefix, one set of conventions, one OpenAPI document. New capabilities are added to v4.
Code
Code
Changing v4 without breaking it
Within v4, only additive changes are allowed. A breaking change to a stable v4 surface is not made: a replacement is added next to it, and the old one goes through deprecation.
- new operations and collections
- new optional request fields and parameters
- new response fields
- new enum values (enums are extensible)
nullwhere there was none
- removing or renaming a path, field or parameter
- new required request fields, or making an optional field required
- changing a field's type or format
- removing an enum value, or accepting fewer request values
- changing a status code or error
type
Maturity labels
x-stability: preview or x-stability: beta marks surface that may still change
without a deprecation period. No label means stable.
x-stability: previewThe whole v4 document. It may still change without a deprecation period.
Operations graduate individually.
Bound by the table above from then on.
Code
Code
Deprecation
A deprecated operation is marked and announced, gets at least 90 days of notice when it is stable, and is removed only after its sunset date. Unchanged from the shared rule.
deprecated: truePlus a successor in the description.
At runtime, from the http-deprecation-outbound policy.
Of notice, for stable operations.
410 Gone after the sunset date.
v1 to v3 and api.zuplo.com
Existing dev.zuplo.com versions are frozen and keep working.
The portal moves to v4 resource by resource. A portal feature built on v4 no
longer needs its api.zuplo.com counterpart.
When nothing calls an api.zuplo.com route anymore, it is removed.
One /v4 prefix on every path (VER-1), and x-stability on the document (VER-4).
Breaking changes (VER-3) and deprecations (VER-2).