Exemptions
API for managing worker and applicant exemptions.
Get exemption
Fetch a single exemption by ID.
Replace exemption
Replace exemption properties wholesale. Owners and the acknowledgement trail (reason / acknowledgedBy / acknowledgedAt) are preserved from the existing record — use the create path to set them. Body must include `identification.exemptionType`.
Soft delete exemption
Marks the exemption as removed.
Partially update exemption
Apply a partial update. Owner changes and acknowledgement-trail fields (acknowledgedBy / acknowledgedAt) are immutable and rejected if supplied.
List exemptions
Search exemptions with optional filters. Owner filter accepts `ownerType` (worker|applicant) + `ownerId` (synthetic ID). Other filters: exemptionType, jurisdiction, status, eligibility. Filter by record recency with `updatedAfter` and/or `updatedBefore` (ISO 8601 instant, e.g. 2026-01-01T00:00:00Z, or a bare date 2026-01-01); `updatedAfter` is inclusive, `updatedBefore` is exclusive. Sort by `lastUpdated` (record last-modified time), e.g. `sort=lastUpdated:desc`. Soft-deleted exemptions are excluded by default; pass `includeDeleted=true` to include them.
Create exemption
Create a new exemption. Server generates a synthetic `exm_<16chars>` ID. Required: `identification.exemptionType`, `acknowledgement.reason`, and at least one of `owners.worker` / `owners.applicant`. The server stamps `acknowledgedBy` (the API actor) and `acknowledgedAt` (now); these are immutable thereafter. `displayName`, `referenceNumber`, and `status` are synthesised when omitted. Owners are immutable after create.