> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crewpass.co.uk/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Versioning policy and release history for the CrewPass Partner API.

The API is versioned in the path (`/api/v2/`). Additive changes (new endpoints,
new optional response fields) are not breaking. Removing a field, changing a
type, or tightening a scope is breaking and ships under a new path version.

## 2026-07-02 — compliance as a unified requirement matrix

`POST /api/v2/employers/me/crew/{id}/compliance-checks` now returns a full
requirement matrix, so you can see at a glance exactly which requirements a crew
member holds, which document satisfies each, and what is still outstanding.

* **`requirements[]`** — one row per requirement, grouped as `medical`, `stcw`,
  `certificate`, or `qualification`. Each row has its own `status`
  (`met` · `expiring` · `expired` · `missing` · `pending`), plus `title`,
  optional `expiry_date`, and `days_until_expiry`.
* **`satisfied_by[]`** — the actual document(s) meeting each requirement, each with
  `document_id`, `title`, `expiry_date`, and a branded `download_path` you can
  fetch directly. Empty when the requirement is unmet.
* **STCW rows** carry per-module detail under `modules[]`.
* **`summary`** — totals per status that always reconcile with `requirements[]`.
* **`overall_status`** with **`compliance_source`** — the verdict comes straight
  from the CrewPass compliance engine (`live_evaluator`). If the engine is briefly
  unavailable the response falls back to the stored projection and flags it via
  `compliance_source`, so the provenance of every verdict is explicit.

This supersedes the earlier interim compliance breakdown with a single, consistent
shape.

## 2026-06-30 — richer crew profile & document detail

Several read fields now carry more detail and map more precisely to the underlying
records. All changes are additive except the two field-value changes noted below.

* **Profile `phone`** is now returned in full international (E.164) form (dial code
  * national number, e.g. `+447700900000`), with a new ISO `country_code` alongside
    it. *Value change:* `phone` previously returned the national number only.
* **Profile `address.full_address`** (new) gives the composed single-line address;
  `line1` stays `null` when no street was supplied.
* **Employment history `source`** now reports the verification level of each entry —
  `self_reported` or `employer_verified`. *Value change:* it previously returned the
  dashboard origin (`crew_dashboard` / `employer_dashboard`).
* **Documents** now return only current, live documents — rejected,
  replaced/deduplicated, and inactive placeholders are excluded from listings,
  expiring counts, and downloads, so what you see reflects what a crew member
  actually holds.

## 2026-06-23 — simpler read authentication (no request signing)

Reads now authenticate with just your API key as a Bearer token over TLS — request
signing has been **dropped from all reads**, so there is nothing to sign on a GET.
HMAC signing is retained only for verifying outbound webhook deliveries. See
[Authentication](/authentication). No request or response shapes changed; only the
read auth requirement is simpler.

## 2026-06 — v1 management read surface + webhooks

The v1 management-company surface: **read-only plus webhooks**, on top of the
auth → scope → rate-limit → HMAC → isolation → consent → audit spine. Your fleet
is derived from your CrewPass employer account; there is nothing to attach.

**Endpoints**

* `GET /api/v2/partners/me` — identity + granted scopes.
* `GET /api/v2/employers/me/vessels` — your vessels (`vessels:fleet:read`).
* `GET /api/v2/employers/me/fleet` — crew across your vessels, with verification +
  background-check status and documents-expiring counts, paginated
  (`vessels:fleet:read` + per-crew `crew:status:read`).
* `POST /api/v2/employers/me/crew/lookup` — resolve a crew member by email
  (`crew:status:read`).
* `GET /api/v2/employers/me/crew/{id}/profile` — base profile, plus an identity
  block under `crew:profile:full:read`.
* `GET /api/v2/employers/me/crew/{id}/photo` — branded photo proxy
  (`crew:profile:read`).
* `GET /api/v2/employers/me/crew/{id}/documents` — documents with issuer +
  verification status (`crew:documents:read`).
* `GET /api/v2/employers/me/crew/{id}/documents/{document_id}/download` —
  short-lived, branded file link (`crew:documents:download`).
* `POST /api/v2/employers/me/crew/{id}/compliance-checks` — compliance as a unified
  requirement matrix (`crew:compliance:read`).

**Webhooks**

* `crew.document.processed`, `crew.document.updated`, `crew.compliance.changed`,
  `crew.status.changed`, `crew.profile.updated`. See [Webhooks](/webhooks).
