Skip to main contentOur philosophy is to try and avoid creating new versions as much as possible. Any changes to an APIs payload, either in creation or in
responses, should be as backwards compatible as possible. We do not consider
adding new endpoints to be “breaking changes”, so would not consider releasing a
new version.
Always achieving backwards compatibility however is often an unrealistic
expectation for the long term, any self-respecting API will need to offer some
kind of a solution.
Our approach is to version API endpoints by service and in the request URL’s
path. This implies that if we only need to make changes to a single service, all
the other services are isolated. It’s easier to log or debug requests and
extract statistics from logging data.
You’ll see in the documentation that each service’s end-points include the
version in the URL path, a few examples:
-
GET https://api.invopop.com/utils/v1/ping
-
PUT https://api.invopop.com/transform/v1/jobs/XXXXXX
-
GET https://api.invopop.com/silo/v1/envelopes
If at some point in the future for example we decide to refactor our transform
job creation service, we’ll be able to suggest clients switch from
transform/v1 to transform/v2 as part of their migration process.