Table of Contents

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"]
        }
      ]
    }
  ]
}