/v1/* runs at least 12 months past
/v2 launch, with the deprecation schedule announced on this page and via
email to every active partner contact.
What counts as a breaking change:
- Removing or renaming any field, endpoint, header, error code, or scope.
- Tightening a validation rule on an existing field.
- Changing the shape of a webhook payload.
- Removing or changing the meaning of an event type.
- Adding a new endpoint, field, header, error code, or scope.
- Adding a new event type.
- Loosening a validation rule.
- Adding a new optional query parameter.
2026-09-12 — New members use normal DSS signup
POST /v1/partners/sponsorships no longer creates a Digital Sea Service
account. An unknown email returns
account_requires_signup (409) with
signup_url. Send Set up my DSS account to
/signin?intent=signup&partner=ywc&…. Premium is granted on Connect.
2026-09-12 — Account exists is enough
Additive / loosening. Partners that already handled404 still work.
A Connected member with a DSS account is a valid member even with no
vessel and no crew list. They add vessels and discharge dates inside the
DSS app. Do not treat an empty record as unreachable or incomplete.
GET /v1/me/sea-time and /recent therefore return 200 with zero
totals (and an empty months array) when the member exists but has no
qualifying sea days yet. GET /v1/me/vessels returns 200 with an empty
list. A true 404 means the token’s user is unknown to DSS.
The DSS Homepage button for an already-Connected YWC member must mint
POST /v1/partners/sso/tickets and redirect to login_url. That opens the
app signed in; with no fleet they land on add-vessel. Do not link
https://digitalseaservice.com.
2026-09-09 — YWC partner SSO
Additive. Nothing existing changed shape.Endpoints
POST /v1/partners/sso/tickets— Yacht Workers Council only. Mint a 60-second, single-use login URL so an already-Connected member opens the DSS app signed in. HTTP Basic. Body:{ "user_id": "<dss uid>" }. Requires live Connect consent. See Open DSS (YWC SSO).
2026-09-09 — YWC member-left
Additive. Nothing existing changed shape.Endpoints
POST /v1/partners/members/left— Yacht Workers Council only. Close the Connect-billed Crew Premium seat when a member leaves, lapses, or deletes their YWC account. HTTP Basic (client_id:client_secret). Body:user_id(DSS Firebase uid from Connect), optionalexternal_ref(ywc-user-{id}), optionalreason(account_deleted|membership_lapsed). Idempotent. See Member left (YWC).
2026-08-29 — Membership status on /v1/me
Additive. Nothing existing changed shape.
Endpoints
GET /v1/menow returns amembershipblock —tier,source(self/sponsored/vessel),since, plusexpires_atandsponsored_by_youwhen you are the member’s sponsor. See Membership status.- It rides on the existing
profile:readscope. No reconsent needed — tokens you already hold can read it.
Errors
- Documented
service_unavailable(503). The type is not new —/v1/me/sea-time,/v1/me/sea-time/recentand/v1/me/vesselshave always been able to return it — but it was missing from this catalog. - Added
entitlement_write_failed(502) to the partner Sponsorship API. Returned when we cannot grant Premium to a crew member; the reserved seat is credited back before we respond, so nothing is billed and the request is safe to retry.
2026-05-28 — V1 launch
First public release of the DSS Public API.Authentication
- OAuth 2.0 Authorization Code flow with PKCE (
S256required). - Opaque access tokens (1-hour TTL) and rotating refresh tokens (90-day TTL).
- RFC 7009 token revocation.
Endpoints
GET /v1/me— basic profile (profile:read).GET /v1/me/sea-time— totals, by-role breakdown, verified split (seatime:read).GET /v1/me/sea-time/recent— rolling 12-month trend (seatime:read).GET /v1/me/vessels— paginated vessel history (vessels:read).GET /v1/webhooks/test— fires awebhook.testevent to your registered URL.
Caching
- ETag +
If-None-Matchon every resource. Last-Modified+If-Modified-Sinceon every resource.
Rate limits
- 600 / minute, 10,000 / day, per
client_id. X-RateLimit-*headers on every authenticated response.
Webhooks
- Event types:
user.profile.updated,user.sea_time.updated,user.vessels.updated,user.consent.revoked,webhook.test. - HMAC-SHA256 signing with a 5-minute replay window.
- Retry schedule:
+1m, +5m, +30m, +2h, +6h. Give up after 24h.
Errors
- Resource endpoints: RFC 7807 Problem Details with stable
typeURLs. - OAuth endpoints: RFC 6749 §5.2 shape.
Docs
- Mintlify docs site live at docs.digitalseaservice.com.
llms.txt,llms-full.txt, and every page as.mdfor AI agents.- OpenAPI 3.1 spec at
/openapi.jsonand/openapi.yaml.
Subscribing to changes
We email every partner contact at the address you gave us during onboarding when anything ships here. We will not surprise you with a breaking change — the V1 → V2 transition will have its own announcement, its own dedicated docs section, and at least 12 months of overlap. For the truly paranoid:https://docs.digitalseaservice.com/llms-full.txt
is the entire docs tree as a single file. Diff it.
