Compatibility and Deprecation¶
When an API module is publicly released, the request and response model are guaranteed to stay consistent and backwards compatible. Breaking changes will not be done in a released version, instead we will release a new version of the module, which may have a different structure and contract.
However, the following changes are not considered breaking, and any integrating client should make sure to allow for such changes:
- New endpoints - New endpoints may be added at any time.
- New output fields - Adding a new output field may be done at any time.
- New enum values - A field with defined valid output values (enum field) may be extended with new enum values. Integrating clients should therefore handle new/unknown enum values.
- New input fields - New input fields, and new enum values for input enum fields, may be added. However, such fields are not added as mandatory/required input fields, as that would constitute a breaking API change.
- New or changed list entries - For an endpoint returning a list of values, e.g. case categories or alarm categories, it is not considered a breaking change to add new entries to the list, or remove entries from the list. These are considered dynamic values.
Deprecations and removal of APIs¶
Deprecation of single fields¶
Single fields may be marked as deprecated in both input and output. Deprecated fields will NOT be removed for the lifetime of the endpoint, to avoid compability issues.
For input fields, a deprecated field may be ignored if it no longer has any relevance for the endpoint;
without causing breaking behaviour.
For output fields, a deprecated field value may be omitted (value null), if we no longer have sensible
values to return for it.
Tip
For a response field marked as "non-null", returning null is a breach of contract.
However, clients should always code defensively around response values, as even fields/objects
marked as non-null in the API may be null if the system fails to resolve them properly, returning
a best-effort response instead of failing completely.
The OpenAPI documentation will point to how the field should be replaced.
Deprecation of endpoints¶
When an API endpoint is deprecated, the OpenAPI documentation will mark it as documented, and the endpoint description will point you to which endpoint to use instead.
In addition, we will list deprecated endpoints in the deprecation overview.
The endpoint itself will start emitting a WARNING message:
1 2 3 4 5 6 7 8 9 10 | |
In addition, it will emit the header Argus-Deprecated-Deadline with the deprecation deadline, e.g. Argus-Deprecated-Deadline: 2026-09-01T00:00:00Z
Disabling of deprecated endpoints¶
Deprecated endpoints will have a grace period defined on the endpoint, after which the endpoint will be automatically disabled.
Disabled endpoints will fail with HTTP error 410 GONE:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
For integrations that suddenly start to fail due to endpoints being disabled, we provide a short emergency migration grace period, before the endpoint is permanently removed.
As mentioned in the returned error message, clients may set HTTP request header
Argus-Override-Disabled-Endpoints: true in the request to override the disabling of the endpoint.
This will let the client continue to use the deprecated endpoint until the removal-deadline is hit.
Using the endpoint with this option will always emit a warning message in the response:
1 2 3 4 5 6 7 8 9 10 | |
Once the removal deadline is hit, the endpoint is completely dead.
Warning
If you update your client to use the Argus-Override-Disabled-Endpoints: true header,
make sure you immediately schedule migration to new endpoints well in advance of the
removal date!