| bc-version |
domain |
keywords |
technologies |
countries |
application-area |
|
|
web-services |
| api-page |
| apiversion |
| versioning |
| published-contract |
| breaking-change |
| backward-compatibility |
|
|
|
|
Version changed API shapes with a new page object
Description
Once an API version is published, external clients depend on its exact shape — entity names, fields, keys, and behavior — as a stable contract. APIVersion can list several versions on one API page, but every listed route is generated from that same page object and therefore exposes the same shape. Adding 'v2.0' to a page and then changing its fields changes what both v1.0 and v2.0 serve. To preserve the v1 shape while introducing a different v2 shape, keep the v1 page unchanged and create a separate page object for v2.
Best Practice
Keep the existing page object and its APIVersion = 'v1.0' contract unchanged. Copy the page to a new object ID, set that object's APIVersion = 'v2.0', and make the v2-only shape changes there. A multi-value APIVersion list is appropriate only when the exact same page shape is supported under each listed version.
See sample: version-apis-by-adding-not-mutating-published-versions.good.al.
Anti Pattern
Editing the published v1.0 page in place breaks its clients. So does adding v2.0 to that same page and assuming subsequent field changes apply only to v2: both routes use one object shape. The detection signal is a breaking shape change without a separate API page object retaining the old version.
See sample: version-apis-by-adding-not-mutating-published-versions.bad.al.