Ships file
GET /ships?market={market} — market required (selects the language of the marketing copy).
A JSON array with one object per ship: specifications, deck plans, marketing copy, and the cabin categories/grades available on that ship. This is static reference data — the structural fields are identical across markets; only the human-readable copy (body, cabin descriptions) is localized by market.
curl --location 'https://bookings.sw.travelhx.com/ships?market=GB' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
Top-level fields
| Field | Type | Description |
|---|---|---|
shipId |
string (enum) | Ship identifier; matches voyages[].ShipCode. One of FN, FR, RA, SP, SC. |
imageUrl |
string (uri) | Primary hero image URL. |
heading |
string | Ship display name. E.g. MS Fram. |
body |
string | Ship description / marketing copy (HTML). Localized by market. |
media |
array of media | Gallery images for the ship. |
yearOfConstruction |
string | Year built (free-text). E.g. 2007. |
shipyard |
string | Builder / shipyard. E.g. Fincantieri (IT). |
passengerCapacity |
string | Maximum passenger capacity (free-text). E.g. 200. |
beds |
string | Total bed count (free-text). E.g. 286. |
grossTonnage |
string | Gross tonnage, including unit. E.g. 11,647 t. |
length |
string | Overall length, including unit. E.g. 114 m. |
beam |
string | Beam (width), including unit. E.g. 20 m. |
speed |
string | Service speed, including unit. E.g. 13 knots. |
facilities |
array of string | Onboard facilities. E.g. ["Fitness Center", "Restaurants", "Wi-Fi"]. |
decks |
array | Deck plans, one per deck. See decks. |
cabinCategories |
array | Cabin categories grouping their grades. See cabinCategories. |
Note
Numeric-looking specs (yearOfConstruction, passengerCapacity, beds) are strings, and dimensions (grossTonnage, length, beam, speed) include their unit. Don't assume they parse cleanly as numbers.
decks
| Field | Type | Description |
|---|---|---|
number |
string | Deck number (free-text). E.g. 2. |
media |
media | Deck-plan image (typically an SVG). |
cabinCategories
A ship groups its cabins into categories (e.g. Polar Inside, Polar Outside, Arctic Superior, Expedition Suite), each containing its cabin grades.
| Field | Type | Description |
|---|---|---|
title |
string | Category name. E.g. Polar Inside, Expedition Suite. |
description |
string | Category description (HTML). |
media |
array of media | Category gallery images. |
cabinGrades |
array | Cabin grades within this category. See cabinGrades. |
cabinGrades
This is where voyages[].categories[].Category resolves: match it against cabinGrades[].code.
| Field | Type | Description |
|---|---|---|
code |
string | Cabin grade code; matches voyages[].categories[].Category. E.g. I2, U2, MG, USPI. |
title |
string | Display title. E.g. I2 \| Inside cabin. |
shortDescription |
string | Short cabin description (HTML). |
longDescription |
string | Full cabin description (HTML). |
sizeFrom |
integer | Minimum cabin size in m². 0 when unspecified. |
sizeTo |
integer | Maximum cabin size in m². 0 when unspecified. |
hasBathroom |
boolean | Private bathroom. Omitted for some grades. |
bed |
string | Bed configuration. E.g. Double bed \| Optional Twin. Omitted for some grades. |
window |
string | Window/view description. E.g. No Window, Window \| limited view or no view. Omitted for some grades. |
hasBalcony |
boolean | Private balcony. Omitted for some grades. |
hasSofa |
boolean | Sofa. Omitted for some grades. |
hasTv |
boolean | TV. Omitted for some grades. |
hasDinnerTable |
boolean | Dinner table. Omitted for some grades. |
isSpecial |
boolean | Flags a special cabin (e.g. wheelchair-accessible). Present only when true. |
maxOccupancy |
integer | Maximum occupancy. E.g. 2, 4. Omitted for some grades. |
cabinGradeImages |
array of string (uri) | Image URLs for this cabin grade. |
Note
The boolean amenity flags and several other fields are optional — they are present only when there is a value. Treat a missing flag as "unknown / not specified", not as false.
media object
Used by media, decks[].media, and cabinCategories[].media.
| Field | Type | Description |
|---|---|---|
retinaUri |
string (uri) | Image URL (required). |
Example object (abridged)
{
"shipId": "FR",
"heading": "MS Fram",
"imageUrl": "https://.../fram-hero.jpg",
"body": "<p>MS Fram is named after...</p>",
"media": [{ "retinaUri": "https://.../fram-1.jpg" }],
"yearOfConstruction": "2007",
"shipyard": "Fincantieri (IT)",
"passengerCapacity": "200",
"beds": "286",
"grossTonnage": "11,647 t",
"length": "114 m",
"beam": "20 m",
"speed": "13 knots",
"facilities": ["Fitness Center", "Restaurants", "Wi-Fi"],
"decks": [{ "number": "2", "media": { "retinaUri": "https://.../deck2.svg" } }],
"cabinCategories": [
{
"title": "Polar Inside",
"description": "<p>Comfortable inside cabins...</p>",
"media": [{ "retinaUri": "https://.../polar-inside.jpg" }],
"cabinGrades": [
{
"code": "I2",
"title": "I2 | Inside cabin",
"shortDescription": "<p>Inside cabin</p>",
"longDescription": "<p>...</p>",
"sizeFrom": 10,
"sizeTo": 13,
"hasBathroom": true,
"window": "No Window",
"maxOccupancy": 2,
"cabinGradeImages": ["https://.../i2.jpg"]
}
]
}
]
}