Versioning
The Customer API uses calendar-based API profiles — a string in the
form YYYY-MM, for example 2026-04. The current profile is exposed
via the /api/version endpoint and inside
every schema response.
What's in a profile?
An API profile defines:
- The set of endpoints available.
- The fields included in each response.
- The behaviour of any endpoint-level rules (such as which products are
included in
/productsfor a given customer).
When Kiss adds new endpoints or new fields without breaking existing clients, the profile does not change. Your client continues to work with no action required.
When Kiss makes a breaking change — for example, removing a field or changing the semantics of a value — the profile name changes.
What counts as a breaking change?
Breaking changes include:
- Removing an endpoint.
- Removing a field from a response payload.
- Changing the data type of a field.
- Changing what a field represents (for example, switching
PriceExclVATfrom a discounted to a non-discounted figure).
Non-breaking changes include:
- Adding a new endpoint.
- Adding a new field to an existing response.
- Adding a new value to an enumeration.
When in doubt, the schema endpoints
(/products/schema,
/stock/schema) describe the live payload
shape — your client can compare them against an internal cached copy
on startup and alert you if the surface changes.
How to check the current profile
GET /api/version (no authentication required) returns:
{ "apiVersion": "2026-04" }
This is the profile the deployment is currently serving. Cache it and verify it on every run — when the value changes, review the release notes.
What versions look like in the URL
The current URL design does not include the profile in the path —
endpoints are unversioned (e.g. /products, not /v1/products or
/2026-04/products). The profile is signalled by the response from
/api/version and inside schema responses.
This is a deliberate choice that keeps your client code simple — when Kiss deploys a new profile, you usually don't need to change your URLs.
How upgrades work in practice
When Kiss releases a new profile:
- The new profile is announced ahead of time, with release notes describing the changes.
- The old profile remains live in parallel for a transition window so that customers can migrate at their own pace.
- When the transition window ends, the old profile is retired and
/api/versionreturns the new profile.
For non-breaking changes (most of them), no migration is required.
Recommendations for your client
- Cache the current profile in your client. Compare it against
/api/versionon each run and log a warning if it has changed unexpectedly. - Pin your tests to a known profile so that you can detect when a schema you depend on has changed.
- Use the schema endpoints if your application needs to be resilient to new fields without code changes.
Reporting compatibility issues
If a new profile breaks your integration in a way that isn't documented in the release notes, please open a support ticket with a sample request and response so we can investigate.