Changelog
2026-01-30
Added
- Public
/v1/*API surface (34 endpoints across 10 modules): vessels, equipment, maintenance, inventory, expenses, documents, crew/STCW, charter, trips, compliance (drill cadences, permits to work, MARPOL regulatory records), fleet aggregations. - Hand-authored OpenAPI 3.1 spec (
openapi/v1.yaml) covering all 34 endpoints on the public surface, withexpress-openapi-validatorenforcing request-shape conformance on every/v1/*call and response-shape conformance inNODE_ENV=testas a drift-detection mechanism. - Idempotency support via
Idempotency-Keyheader onPOST/PATCH/DELETE(24h window, full-response-body cache, per architect spec §6). - Cursor pagination on list endpoints (opaque
(createdAt, id)tuple, per architect spec §5). - Webhook delivery infrastructure (all 16 events live, HMAC signing, retry + DLQ, Settings → Webhooks CRUD, secret rotation).
- Error code
VALIDATION_ERROR— a/v1/*request that doesn't match the published spec returns a structured400with the specific field/schema violation inmeta.errors, instead of falling through to a handler or a generic 500. - Feature gate on every
/v1/*request — the API key's creator-user must hold thedeveloper_apifeature (Developer API add-on or Enterprise tier). Unlicensed requests get403ADDON_REQUIREDbefore rate limiting or scope enforcement run.
Deprecated
?page=&limit=on/v1/*list endpoints — use?cursor=instead.SunsetandDeprecationresponse headers are added when a request uses?page=without?cursor=. Sunset: 2027-01-30.
