Versioning and deprecation

We promise that a version of an API is not broken under you, and that a version we retire is announced in advance, in the responses themselves, with at least six months before it goes.

The path carries the version

Every product API is served at https://api.suredocs.ie/<api>/v<n>/...: the API's name, then its own version integer. The upload, for example, is POST https://api.suredocs.ie/files/v1.

The token endpoint is the exception, deliberately. /oauth/token has no name and no version. It is the OAuth authorization server, and OAuth libraries are configured with one fixed token URL. It changes only in ways the OAuth RFCs allow.

What we publish

API Version Status Reference
files 1 Live SureDocs files API, version 1
Authorization server (oauth) none Live SureDocs authorization server

What counts as a breaking change

We never make these to a live version. Each ships as the next version integer of that API alone.

  1. Removing an operation.
  2. Removing or renaming a response field.
  3. Adding a required request field, or making an optional one required.
  4. Removing an accepted request field.
  5. Narrowing an enum or a type: a request field that accepts fewer values, or a response field that may return a type you were not promised, such as a field becoming nullable.
  6. Tightening a limit: a smaller maximum size, a shorter maximum length, fewer items allowed.
  7. Changing a status code for an existing outcome.
  8. Changing an error reason code for an existing outcome.

Two further changes break callers without being visible in an operation's schema, and we rule them out for a live version too: removing a response header these pages promise, and requiring a scope an existing operation did not require before.

What is not, and what your code must tolerate

These ship inside the current version, without notice. Write your client so that none of them breaks it.

Do not depend on the order of fields in a response, or on the length or format of any identifier we return. Identifiers are opaque.

Deprecation and removal

When a version has to break, we ship the next version and deprecate the old one. The old one keeps working.

Log these headers and alert on them, so that a deprecation reaches a person on your side long before the removal date does.

Changes to these documents

The reference documents and the numbers on these pages are generated from the code that serves the APIs, by the same build that ships it. When the two differ, the code is right and the build is wrong, and we want to hear about it.