Skip to main content
POST
Provision a crew member into a sponsored seat

Authorizations

Authorization
string
header
required

OAuth 2.0 Authorization Code flow with PKCE. See the integration guide at docs.digitalseaservice.com for the full step-by-step.

Headers

Idempotency-Key
string | null
authorization
string | null

Body

application/json

Auto-provision one crew member into a sponsored Premium seat (JIT).

All of email, first_name, last_name, position and a 7-digit vessel_imo are required — the dashboard needs them to create the account, vessel and tracking in one step. There is no invite/claim round-trip.

email
string
required

Crew member's email (normalised).

Minimum string length: 3
first_name
string
required

Crew member's first name.

Required string length: 1 - 100
last_name
string
required

Crew member's last name.

Required string length: 1 - 100
position
string
required

Crew rank/role for the account.

Minimum string length: 1
vessel_imo
string
required

7-digit IMO of the vessel to track.

Pattern: ^\d{7}$
phone
string | null

Crew member's phone (E.164).

vessel_name
string | null

Vessel display name (optional).

join_date
string<date-time> | null

Crew join date on the vessel.

external_ref
string | null

Partner's own opaque reference.

Response

Idempotent replay — an open seat already existed for this email.

The provisioned seat — returned 201 on create, 200 on idempotent replay.

sponsorship_id
string
required
status
string
required
user_id
string | null

The member's DSS user id — the same id delivered in the data.user_id of user.sea_time.updated webhooks. Persist it to correlate future webhooks to your own member record. Null until the seat is active (e.g. an invited-but-unclaimed seat).

vessel_resolved
boolean
default:false

False when the IMO did not match a vessel (soft failure).

claim_url
string | null

Always null for JIT — there is no claim link.

expires_at
string<date-time> | null

Per-user sponsored term end (activated_at + term_months).