ICAP returns HTTP status codes. Error responses use a Problem Details-style object with fields such as type, title, status, and detail. Treat detail as explanatory text, not as a stable programmatic code.
|
Status |
Meaning |
Recommended action |
|---|---|---|
|
|
The request is malformed or fails validation. |
Correct the request; do not retry unchanged. |
|
|
Authentication failed. |
Obtain a valid HID Authentication Service token. |
|
|
The caller is authenticated but lacks permission. |
Correct the tenant, role assignment, or role permissions. |
|
|
The tenant or active resource was not found. |
Verify IDs and lifecycle state; do not create a replacement automatically. |
|
|
A business rule or concurrent write prevented completion. |
Re-read the relevant state and resolve deliberately. |
|
|
|
Re-read and reconcile. |
|
|
A guarded operation lacks a valid |
Supply the current numeric version. |
|
|
ICAP encountered an unexpected failure. |
Record the request context and contact support if it persists. |
|
|
ICAP or a dependency is temporarily unavailable. |
Retry with bounded exponential backoff and observability. |
Retry safely
Retry only requests whose result you can safely determine. A network timeout does not prove that ICAP did not complete the request.
-
For read operations, It is safe to retry on network timeouts or
503 Service Unavailableusing bounded exponential backoff. -
For create operations, a network timeout does not mean creation failed. Store a stable external identifier, query the target resource first upon failure, and create only if no matching record is found.
-
For guarded updates, re-read after
409or412; never retry a stale update unchanged. -
For delete and purge, inspect the current lifecycle state. Purge is not an idempotent second success.
-
For PACS-backed behavior, distinguish successful ICAP acceptance from downstream completion and inspect PACS transactions.
Log the tenant, resource ID, operation, response status, and a safe correlation ID. Never log bearer tokens, PIN values, or unnecessary personal data.