Charter

Charter bookings.

GET/charter/{vesselId}/bookings

List a vessel's charter bookings

Supports `?cursor=` pagination. Bookings are annotated `isLocked: true` when the owning vessel's plan has downgraded below the `bookings_guests` feature tier.

Path parameters
NameInTypeRequiredDescription
vesselIdpathstring (uuid)required—
Query parameters
NameInTypeRequiredDescription
cursorquerystringoptionalOpaque pagination cursor from a previous response's `pagination.cursor`. Omit this param entirely for the first page of cursor mode; pass `cursor=` (empty) is also accepted as "start from the beginning in cursor mode." Omitting `cursor` altogether (not even as an empty string) falls back to legacy `?page=` semantics on endpoints that still support it.
limitqueryintegeroptional—
Response
FieldTypeRequiredDescription
dataarray<object>required—
data[].idstring (uuid)optional—
data[].vesselIdstring (uuid) | nulloptional—
data[].bookingReferencestringoptional—
data[].charterCompanystring | nulloptional—
data[].startDatestring (date-time)optional—
data[].endDatestring (date-time)optional—
data[].embarkPortstring | nulloptional—
data[].disembarkPortstring | nulloptional—
data[].itineraryobject | array | nulloptional—
data[].totalPricestring | nulloptionalSerialized as string to preserve Decimal precision.
data[].currencystringoptional—
data[].depositPaidstring | nulloptionalSerialized as string to preserve Decimal precision.
data[].statusenum(inquiry | confirmed | in_progress | completed | cancelled)optional—
data[].specialRequestsstring | nulloptional—
data[].provisioningNotesstring | nulloptional—
data[].notesstring | nulloptional—
data[].apaAmountstring | nulloptionalSerialized as string to preserve Decimal precision.
data[].apaPercentagestring | nulloptionalSerialized as string to preserve Decimal precision.
data[].deliveryFeestring | nulloptionalSerialized as string to preserve Decimal precision.
data[].redeliveryFeestring | nulloptionalSerialized as string to preserve Decimal precision.
data[].taxRatestring | nulloptionalSerialized as string to preserve Decimal precision.
data[].taxAmountstring | nulloptionalSerialized as string to preserve Decimal precision.
data[].brokerNamestring | nulloptional—
data[].brokerCommissionstring | nulloptionalSerialized as string to preserve Decimal precision.
data[].agentCommissionstring | nulloptionalSerialized as string to preserve Decimal precision.
data[].isArchivedbooleanoptional—
data[].isLockedbooleanoptionalPresent only when the plan has downgraded below bookings_guests full-charter access.
data[].lockReasonstringoptional—
data[].guestsarray<object>optional—
data[].guests[].idstring (uuid)optional—
data[].guests[].profileobjectoptional—
data[].createdAtstring (date-time)optional—
data[].updatedAtstring (date-time)optional—
paginationobjectoptionalCanonical cursor-pagination block. On endpoints not yet retrofitted for true cursor support, `cursor` is a best-effort display-only value (not decodable, no `?cursor=` branch accepts it back) — see each endpoint's description for whether it has full cursor support.
pagination.cursorstring | nulloptionalOpaque token for the next page, or `null` when `hasMore` is `false`.
pagination.limitintegerrequired—
pagination.hasMorebooleanrequired—
pagination.totalintegerrequiredTotal row count matching the filter (not just this page).
metaobjectoptionalEndpoint-specific extra fields promoted out of the top level by envelope normalization (e.g. `totalAmount`, `planContext`, `hasApproximations`).
POST/charter/{vesselId}/bookings

Create a charter booking

Requires `bookingReference`, `startDate`, `endDate`. Financial fields (`totalPrice`, `apaAmount`, broker/agent commissions, etc.) are silently stripped unless the vessel's plan is Pro tier or higher for `bookings_guests`.

Path parameters
NameInTypeRequiredDescription
vesselIdpathstring (uuid)required—
Request body
FieldTypeRequiredDescription
bookingReferencestringrequired—
charterCompanystringoptional—
startDatestring (date-time)required—
endDatestring (date-time)required—
embarkPortstringoptional—
disembarkPortstringoptional—
itineraryobjectoptional—
totalPricestringoptionalSilently stripped unless the vessel plan is bookings_guests Pro+. Serialized as string to preserve Decimal precision.
currencystringoptional—
depositPaidstringoptionalSerialized as string to preserve Decimal precision.
statusenum(inquiry | confirmed | in_progress | completed | cancelled)optional—
specialRequestsstringoptional—
provisioningNotesstringoptional—
notesstringoptional—
apaAmountstringoptionalSerialized as string to preserve Decimal precision.
apaPercentagestringoptionalSerialized as string to preserve Decimal precision.
deliveryFeestringoptionalSerialized as string to preserve Decimal precision.
redeliveryFeestringoptionalSerialized as string to preserve Decimal precision.
taxRatestringoptionalSerialized as string to preserve Decimal precision.
taxAmountstringoptionalSerialized as string to preserve Decimal precision.
brokerNamestringoptional—
brokerCommissionstringoptionalSerialized as string to preserve Decimal precision.
agentCommissionstringoptionalSerialized as string to preserve Decimal precision.
Response
FieldTypeRequiredDescription
dataobjectrequired—
data.idstring (uuid)optional—
data.vesselIdstring (uuid) | nulloptional—
data.bookingReferencestringoptional—
data.charterCompanystring | nulloptional—
data.startDatestring (date-time)optional—
data.endDatestring (date-time)optional—
data.embarkPortstring | nulloptional—
data.disembarkPortstring | nulloptional—
data.itineraryobject | array | nulloptional—
data.totalPricestring | nulloptionalSerialized as string to preserve Decimal precision.
data.currencystringoptional—
data.depositPaidstring | nulloptionalSerialized as string to preserve Decimal precision.
data.statusenum(inquiry | confirmed | in_progress | completed | cancelled)optional—
data.specialRequestsstring | nulloptional—
data.provisioningNotesstring | nulloptional—
data.notesstring | nulloptional—
data.apaAmountstring | nulloptionalSerialized as string to preserve Decimal precision.
data.apaPercentagestring | nulloptionalSerialized as string to preserve Decimal precision.
data.deliveryFeestring | nulloptionalSerialized as string to preserve Decimal precision.
data.redeliveryFeestring | nulloptionalSerialized as string to preserve Decimal precision.
data.taxRatestring | nulloptionalSerialized as string to preserve Decimal precision.
data.taxAmountstring | nulloptionalSerialized as string to preserve Decimal precision.
data.brokerNamestring | nulloptional—
data.brokerCommissionstring | nulloptionalSerialized as string to preserve Decimal precision.
data.agentCommissionstring | nulloptionalSerialized as string to preserve Decimal precision.
data.isArchivedbooleanoptional—
data.isLockedbooleanoptionalPresent only when the plan has downgraded below bookings_guests full-charter access.
data.lockReasonstringoptional—
data.guestsarray<object>optional—
data.guests[].idstring (uuid)optional—
data.guests[].profileobjectoptional—
data.createdAtstring (date-time)optional—
data.updatedAtstring (date-time)optional—
GET/charter/{vesselId}/bookings/{bookingId}

Get a charter booking

Returns `{ data: { booking: BookingDetail, planContext: {...} } }` — the booking is nested under a `booking` key (not returned bare), matching what the underlying handler emits before envelope normalization wraps the whole thing in `data`.

Path parameters
NameInTypeRequiredDescription
vesselIdpathstring (uuid)required—
bookingIdpathstring (uuid)required—
Response
FieldTypeRequiredDescription
dataobjectrequired—
data.bookinganyoptional—
data.planContextobjectoptional—
data.planContext.isEnabledbooleanoptional—
data.planContext.currentTierstring | nulloptional—