We have been busy over the past few months creating a new framework that will allow us to make changes to the API faster.
The main new features are:
- Versioning - We now support versioning of endpoints meaning we can make backwards incompatible changes.
- Error Responses - We have standardized our error responses to make it easier for you to handle errors.
- Request Specifications - We now have fine grained endpoint parameter specifications that improve request validation greatly.
- Response Specifications - Responses are now predefined so your client will always receive consistent responses and types from the API.
- Automated Documentation - All of the above means we can auto-generate documentation so that it doesn't become out of sync when we make changes.
The ability to version changes to the API is one of the more important new features as it means we can now make backward incompatible changes without breaking older client implementations.
Major versions are specified via the URI of the endpoint and the current major version is v1, for example the whoami call is now:
/api/v1/oauth2/user/whoamiMinor versions are date based E.g. 20140101 and are requested via the special request header dA-minor-version. If you do not send the header your client will always receive the latest minor version available.
Note: You do NOT need to update your current clients, all requests that do not contain the /v1/ major version in the URI are locked to v1.0 automatically.
Check out the full versioning documentation.
One of the more inconsistent parts of the old API was its error messages, we have now simplified the error codes and returns to make it easier for your clients to handle error states.
Old style errors are still returned if the request does NOT contain /v1/ in the URI. These will be documented with the endpoint and are marked as deprecated.
Check out the full errors documentation.
The point of all this work is to make it possible to release new endpoints in the future. So far we are carefully testing the framework and considering what new endpoints can be released. We don't take the decision to release a new endpoint lightly - it is something that must be well designed, coherent and easy to use and something that we must support for a long time to come.
If you have a burning desire for a particular endpoint that would allow you to do something awesome, then we'd love to hear your thoughts. Please bear in mind that we will only be releasing new endpoints once we are confident that they will work well, be useful to a wide audience and be something we can support log term.