/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 asmedical,stcw,certificate, orqualification. Each row has its ownstatus(met·expiring·expired·missing·pending), plustitle, optionalexpiry_date, anddays_until_expiry.satisfied_by[]— the actual document(s) meeting each requirement, each withdocument_id,title,expiry_date, and a brandeddownload_pathyou can fetch directly. Empty when the requirement is unmet.- STCW rows carry per-module detail under
modules[]. summary— totals per status that always reconcile withrequirements[].overall_statuswithcompliance_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 viacompliance_source, so the provenance of every verdict is explicit.
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
phoneis now returned in full international (E.164) form (dial code- national number, e.g.
+447700900000), with a new ISOcountry_codealongside it. Value change:phonepreviously returned the national number only.
- national number, e.g.
- Profile
address.full_address(new) gives the composed single-line address;line1staysnullwhen no street was supplied. - Employment history
sourcenow reports the verification level of each entry —self_reportedoremployer_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. 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. EndpointsGET /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-crewcrew: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 undercrew: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).
crew.document.processed,crew.document.updated,crew.compliance.changed,crew.status.changed,crew.profile.updated. See Webhooks.