Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

General notes

Endpoints are versioned independently.  For example, if you're using EPG v3 you do not have to use Channel v3.

...

We have legacy API's and RESTful API's.

Easy to understand overview of versioning

Major divisions within the API

There are two groups of endpoints:

...

Our new API philosophy is much more strict on adhering to RESTful principals and to versioning.

Endpoint versions

Tip
The general principal is that any particular endpoint is versioned independently of any others.

...

Info

We had been referring to the new REST endpoints as "v4" to try and prevent the situation where an upgrade path results in a version downgrade.  For example, upgrading v3 EPG to v1 Program Metadata.  This is an inconsistency in our versioning philosophy.  We are rather using v1 as the first version for every endpoint, regardless of whether it is legacy or REST.

How upgrading and migration works with respect to versioning

You can upgrade within legacy (for example from EPG v2 to EPG v3) or migrate from legacy to REST (for example by replacing EPG with calls to the three REST endpoints).

Versions and URLs

A version MUST include a major and minor portion, for example: 2.1 

...

Each endpoint MAY have it's own version (and doesn't have to share a version with a group of endpoints, e.g.: recordings/search can be different version from recordings/play)

Changing versions

All changes to API code MUST be regression tested by the implementor against all projects

...

(warning) The effect of this is that all the minor versions within a major version MUST be backwards compatible

Documenting

Each endpoint MUST have a version that is documented in the Jenkins generated documentation

...

Each endpoint function MUST have an annotation for @since that is updated with the ticket that caused you to modify the function

Versions in use

Please see Endpoints in production use