Versioning
Releases of the Investment API carry a version number. The version of the API you are currently using defines which API endpoints are accessible, what parameters and payloads they accept and what responses you will receive from them.
The version numbers we use also convey information to you about the nature of changes we have made with each release. Managing the version numbers correctly requires us to carefully check that we don't release changes that will break your solution by accident.
Our version numbering system
We use semantic versioning for the Investment API, in the format MAJOR.MINOR.PATCH
.
We increment the
MAJOR
version when we introduce incompatible API changes and you need to start aligning your systems with the new version of the Investment API. This is, by design, a very rare event and will not happen without extended forethought, planning and client communication.We increment the
MINOR
version when we add new functionality in a backwards compatible way. This is a relatively common event, and you can be sure that when you see the minor version change, this is worthy of your attention.We increment the
PATCH
version when we fix a bug or change something in a backwards compatible way which does not affect existing functionality. This can happen more than once in a single day. You do not have to take action with regards to these changes unless we contact you directly about them.
If necessary, we may deprecate functionality in favour of newer, equivalent or improved mechanism. In this case we will maintain the deprecated version for a period agreed with our clients. Deprecated functionality will typically be absent from the next MAJOR release.
Following a MAJOR
version update, we can agree with individual clients that the old major version will run alongside the new major version for a transition period to allow for a seamless migration on your side of the integration.```
After the transition period is over, the old API version will start to return a 426 Upgrade Required
error.
How to use versioning
Selecting the right API version to send requests to
The API version is selected by sending an upvest-api-version
header:
upvest-api-version: 1
Only the MAJOR
component is included, as MINOR
and PATCH
version changes are always backwards compatible.
The upvest-api-version
header is optional and defaults to version 1.
Note that this value is not enclosed in quotation marks.
Ensuring backwards compatibility
We consider these changes backwards compatible:
- Adding new API endpoints
- Adding new HTTP methods to existing API endpoints
- Adding optional request body fields
- Adding optional request query parameters
- Adding new response fields
- Any client software is expected to gracefully handle additional properties during JSON unmarshalling / deserialisation.
- Adding new response headers
- Adding new allowed values to existing
enum
-like fields:- Our API models use strings to represent
enum
-like properties, i. e. fields that allow only to be set to a value chosen from a constrained list of values. - Any client software is expected to use a generic string for these types instead of using strict deserialisation into a well-defined enum type.
- Any client software is expected to gracefully handle values which—at the time the client software is written—are outside of the set of allowed values.
- Our API models use strings to represent