List Available Cabin Numbers (Package)
See Booking flow for the end-to-end lifecycle.
Endpoint: /bookings/create/package/{:sessionId}/cabin-numbers
METHOD: GET
Lists the cabin numbers that can currently be booked for one cabin grade on a held booking, grouped by deck.
A booking is created at grade level: unless a specific cabin is chosen, it holds a guarantee cabin and the cabin number is assigned before departure. Call this endpoint once the booking is held to see which individual cabins are available, then apply a chosen cabin.
The booking must already hold a cabin of the grade being asked about — availability is answered against the cabins on the booking, not against the search. Call it once per grade if the booking holds more than one.
Some grades do not correspond to specific cabins at all — the grade itself stands for "a cabin of this standard", and which cabin that is never becomes selectable. Cabin numbers cannot be listed or applied for those grades, and both calls return 400.
An empty array means no individual cabins of that grade can be selected right now. That is a normal response, not an error; the booking keeps its guarantee cabin, and a later call can return cabins.
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| sessionId | string (UUID) | Yes | Session returned by /search/packages. Must be a package session and hold a booking. |
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| cabinGrade | string | Yes | Cabin grade code to list numbers for. Must match the code of a cabin held on the booking. |
| user_key | string | Yes | Unique key associated with the calling agency. |
Example
Request
curl --location '{:apiBase}/bookings/create/package/{:sessionId}/cabin-numbers?cabinGrade=O3&user_key=abcdef' \
--header 'Authorization: Bearer XXXXXXXX'
Response
[
{
"deck": "3",
"cabins": [
{
"cabinNumber": "313",
"code": "O3",
"maximumOccupancy": 3
},
{
"cabinNumber": "315",
"code": "O3",
"maximumOccupancy": 3
}
]
},
{
"deck": "4",
"cabins": [
{
"cabinNumber": "412",
"code": "O3",
"maximumOccupancy": 3
}
]
}
]
Fields
| Field | Type | Description |
|---|---|---|
[].deck |
string | Deck the cabins in this group are on. |
[].cabins |
array of objects | Cabins available on that deck for the requested grade. |
[].cabins[].cabinNumber |
string | The cabin number to send to /cabin-numbers to book this cabin. |
[].cabins[].code |
string | Cabin grade code — always the grade requested. |
[].cabins[].maximumOccupancy |
number | Most passengers the cabin sleeps. A cabin holding fewer passengers than this can still be booked. |
Errors
See Error model for response-body shapes across status codes.
| Status | Cause |
|---|---|
| 400 | cabinGrade or user_key is missing, the booking holds no cabin of that grade, or the grade does not correspond to specific cabins. |
| 404 | The session does not exist or has expired. |
| 409 | The session is not a package session, or no held booking has been created in it yet. |
Availability changes. These cabins are available at the moment you ask. Another booking can take one before you apply your choice, so treat the list as current rather than reserved — see Apply a Cabin Number for how that surfaces.