TUI Cruise Cabin Availability API v1.0
Returns the physical cabins available on a cruise for a given itinerary, duration, cabin type, occupancy and board, with promo code support.
Returns the physical cabins available on a cruise for a given itinerary, duration, cabin type, occupancy and board, with promo code support.
openapi: 3.0.0
info:
title: Cruise Cabin Availability
description: Cruise cabin availability API to get available cabins for a given itinerary, duration, cabin type, occupancy and board.
version: "1.0"
contact:
email: NRCruiseTeam@TUIGroup.onmicrosoft.com
name: "Cruise NR API Support"
x-header: |
This APIs returns physical cabins on a cruise for given search criteria.
x-summary: |
This API returns physical cabins on a cruise that is specific to the search criteria.
servers:
- url: https://prod.api.tui/v2/cruises/cabinsavailability
- url: https://pre-prod.api.tui/v2/cruises/cabinsavailability
paths:
/v2/cruises/cabinsavailability:
post:
tags:
- "Cruise Cabin availability"
summary: API to get available cabins
description: This API gives a list of available physical cabins and price for the given selection and occupancy.
operationId: getCabinSelection
parameters:
- name: x-Correlation-Id
in: header
required: true
description: Unique identifier for tracing requests (UUID format)
schema:
type: string
format: uuid
pattern: '^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$'
- name: apiVersion
description: Indicates the target version of the resource
in: path
required: true
schema:
type: string
pattern: ^v([0-9]+)([.])([0-9]+)$
example: v1.0
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CabinAvailabilityRequest'
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
"$ref": "#/components/schemas/CabinAvailabilityResponse"
application/problem+json:
schema:
"$ref": "#/components/schemas/CabinAvailabilityResponse"
'400':
description: Bad request
content:
application/problem+json:
schema:
"$ref": "#/components/schemas/ValidationProblem"
'401':
description: Not authorised
content:
application/json:
schema:
"$ref": "#/components/schemas/CabinAvailabilityResponse"
application/problem+json:
schema:
"$ref": "#/components/schemas/CabinAvailabilityResponse"
'404':
description: Not Found
content:
application/json:
schema:
"$ref": "#/components/schemas/CabinAvailabilityResponse"
application/problem+json:
schema:
"$ref": "#/components/schemas/CabinAvailabilityResponse"
'500':
description: Internal server error
content:
application/problem+json:
schema:
"$ref": "#/components/schemas/Problem"
'502':
description: One or more backend systems not available
content:
application/problem+json:
schema:
"$ref": "#/components/schemas/Problem"
components:
schemas:
Address:
required:
- city
- countryIsoCode
- houseNumber
- postcode
- streetName
type: object
properties:
houseNumber:
type: string
streetName:
type: string
addressLine2:
type: string
description: For UK - optional. FlightOnly (WR) - not presented.
city:
type: string
postcode:
type: string
countryIsoCode:
type: string
buildingName:
type: string
description: Packages (NR) - not presented. FlightOnly (WR) - optional.
Assignment:
required:
- item
type: object
properties:
travellerId:
type: string
example: adt1
item:
"$ref": "#/components/schemas/Item"
description: An assignment object that includes details about the traveller
and product related to the message.
Cabin:
required:
- cabinNo
- cabinType
type: object
properties:
deck:
type: string
example: '1'
cabinNo:
type: string
example: '10002'
cabinType:
"$ref": "#/components/schemas/CabinType"
travellers:
type: array
items:
"$ref": "#/components/schemas/TravellerRef"
prices:
"$ref": "#/components/schemas/PriceDetail"
CabinAvailabilityRequest:
required:
- metaInformation
- cruise
type: object
properties:
metaInformation:
"$ref": "#/components/schemas/MetaInformation"
cruise:
"$ref": "#/components/schemas/Cruise"
flights:
type: array
description: Flights are mandatory for cruise and flight bookings.
items:
"$ref": "#/components/schemas/Flight"
inventory:
"$ref": "#/components/schemas/CabinPackageInventory"
CabinAvailabilityResponse:
required:
- cabins
- message
description: Response object containing the available cabins and price for the given selection and occupancy.
type: object
properties:
cabins:
type: array
items:
"$ref": "#/components/schemas/Cabin"
messages:
"$ref": "#/components/schemas/Message"
CabinGrade:
required:
- code
type: object
properties:
code:
type: string
example: Z101
name:
type: string
example: Deluxe Inside Cabin
masterCabinGrade:
"$ref": "#/components/schemas/MasterCabinGrade"
CabinType:
required:
- code
type: object
properties:
code:
type: string
example: Z101
name:
type: string
example: Deluxe Inside Cabin Decks 6 & 7
cabinGrade:
"$ref": "#/components/schemas/CabinGrade"
ContactPoint:
required:
- category
- contactPointId
- contactType
- priority
type: object
properties:
contactPointId:
type: string
priority:
type: string
enum:
- Emergency
- First
- Second
- Third
category:
type: string
enum:
- Personal
- Business
contactType:
type: string
enum:
- PHONE
- EMAIL
- ADDRESS
discriminator:
propertyName: contactType
Currency:
required:
- currencyCode
type: object
properties:
currencyCode:
maxLength: 3
minLength: 3
type: string
Item:
required:
- id
- itemType
type: object
properties:
id:
type: string
description: Item id.
itemType:
type: string
enum:
- FLIGHT
- OPTIONS
- STAY
- TRANSFER
- INSURANCE
- EXTRAS
description: Details of the product associated with the assignment.
example: 1
MasterCabinGrade:
required:
- code
type: object
properties:
code:
type: string
example: INS
name:
type: string
example: Inside Cabin
Message:
required:
- code
- text
- type
type: object
properties:
type:
type: string
example: GENERAL
enum:
- GENERAL
- PRICE_JUMP
text:
type: string
description: The detailed text of the message.
code:
type: string
description: Message code that identifies what particular use case this
message is about.
example: OPTIONS-123456
assignments:
maxItems: 2147483647
minItems: 1
type: array
description: A list of assignments related to the message (particular traveller
or product).
items:
"$ref": "#/components/schemas/Assignment"
description: A message object that contains extra information about endpoint
execution for 200 responses.
discriminator:
propertyName: type
Person:
required:
- dateOfBirth
- firstName
- gender
- lastName
- nationality
type: object
properties:
dateOfBirth:
type: string
format: date
firstName:
maxLength: 40
minLength: 2
type: string
middleName:
maxLength: 40
minLength: 2
type: string
lastName:
maxLength: 40
minLength: 2
type: string
reference:
type: string
gender:
type: string
enum:
- MALE
- FEMALE
- NUETRAL
nationality:
type: string
example: BE
vip:
type: boolean
lead:
type: boolean
infantNotBorn:
type: boolean
example: false
type:
type: string
enum:
- NORMAL
- JUDICIAL
- STAFF
- EMERGENCY
contactPoints:
type: array
items:
"$ref": "#/components/schemas/ContactPoint"
address:
"$ref": "#/components/schemas/Address"
phoneNumber:
"$ref": "#/components/schemas/PhoneNumber"
email:
type: string
marketingPreferences:
type: array
items:
type: string
enum:
- EMAIL
- TEXT_MESSAGE
- TELEPHONE
- POST
PhoneNumber:
required:
- countryCode
- countryISOCode
- number
type: object
properties:
countryCode:
type: string
example: "+32"
number:
type: string
example: '50334002'
countryISOCode:
type: string
description: in case of NR this field is not taken into account and skipped
example: BE
Price:
required:
- currency
- priceCategory
- value
type: object
properties:
code:
type: string
example: POPM
priceType:
type: string
example: PER_ADULT
enum:
- PER_ADULT
- PER_CHILD
- PER_INFANT
- PER_PAX
- PER_BOOKING
- PER_ITEM
priceCategory:
type: string
example: NET
enum:
- NET
- TAX
- FEE
- DISCOUNT
- GROSS
aspect:
type: string
example: FLIGHT
enum:
- FLIGHT
- SSR
- INSURANCE
- EXTRAS
- TRANSFER
value:
type: number
example: 100
default: 0
currency:
"$ref": "#/components/schemas/Currency"
travellers:
type: array
items:
"$ref": "#/components/schemas/Traveller"
PriceBreakdown:
type: object
properties:
fare:
type: array
items:
"$ref": "#/components/schemas/Price"
tax:
type: array
items:
"$ref": "#/components/schemas/Price"
discount:
type: array
items:
"$ref": "#/components/schemas/Price"
fee:
type: array
items:
"$ref": "#/components/schemas/Price"
total:
type: array
items:
"$ref": "#/components/schemas/Price"
PriceDetail:
required:
- breakdown
- total
type: object
properties:
breakdown:
"$ref": "#/components/schemas/PriceBreakdown"
total:
type: array
items:
"$ref": "#/components/schemas/Price"
Traveller:
required:
- age
- id
- person
- type
type: object
properties:
id:
type: string
example: 26929514-237c-11ed-861d-0242ac120002
type:
type: string
example: ADULT
enum:
- ADULT
- CHILD
- INFANT
person:
"$ref": "#/components/schemas/Person"
age:
type: integer
format: int32
example: 25
TravellerRef:
required:
- id
type: object
properties:
id:
type: string
age:
type: integer
format: int32
type:
type: string
enum:
- ADULT
- CHILD
- INFANT
Problem:
type: object
properties:
message:
type: string
location:
"$ref": "#/components/schemas/Location"
parseState:
"$ref": "#/components/schemas/ParseState"
rootCause:
type: object
properties:
cause:
type: object
properties:
stackTrace:
type: array
items:
type: object
properties:
classLoaderName:
type: string
moduleName:
type: string
moduleVersion:
type: string
methodName:
type: string
fileName:
type: string
lineNumber:
type: integer
format: int32
nativeMethod:
type: boolean
className:
type: string
message:
type: string
suppressed:
type: array
items:
type: object
properties:
stackTrace:
type: array
items:
type: object
properties:
classLoaderName:
type: string
moduleName:
type: string
moduleVersion:
type: string
methodName:
type: string
fileName:
type: string
lineNumber:
type: integer
format: int32
nativeMethod:
type: boolean
className:
type: string
message:
type: string
localizedMessage:
type: string
localizedMessage:
type: string
stackTrace:
type: array
items:
type: object
properties:
classLoaderName:
type: string
moduleName:
type: string
moduleVersion:
type: string
methodName:
type: string
fileName:
type: string
lineNumber:
type: integer
format: int32
nativeMethod:
type: boolean
className:
type: string
message:
type: string
suppressed:
type: array
items:
type: object
properties:
stackTrace:
type: array
items:
type: object
properties:
classLoaderName:
type: string
moduleName:
type: string
moduleVersion:
type: string
methodName:
type: string
fileName:
type: string
lineNumber:
type: integer
format: int32
nativeMethod:
type: boolean
className:
type: string
message:
type: string
localizedMessage:
type: string
localizedMessage:
type: string
resourceDescription:
type: string
ValidationProblem:
type: object
properties:
problem:
"$ref": "#/components/schemas/Problem"
validationIssues:
type: array
items:
type: string
Location:
type: object
properties:
resource:
type: string
format: binary
source:
type: object
ParseState:
type: object
BaggageOption:
required:
- category
- code
- downstreamRefs
- id
- maxWeight
- travellers
type: object
allOf:
- "$ref": "#/components/schemas/BaseOption"
- type: object
properties:
minWeight:
type: string
description: Minimum weight required for baggage.
example: '0'
maxWeight:
type: string
description: Maximum weight allowed for baggage.
example: '20'
BaseOption:
required:
- category
- code
- downstreamRefs
- id
- travellers
type: object
properties:
id:
type: string
example: 26929514-237c-11ed-861d-0242bd120002
code:
maxLength: 25
minLength: 1
type: string
example: POPM
category:
type: string
example: CABINS
enum:
- ANIMALS
- ASSISTANCE
- BAGGAGE
- CABINS
- FAST
- LOUNGE
- MEALS
- MISC
- SEATS
- SPORTS
included:
type: boolean
description: indicates if SSR is default one
example: true
upgradable:
type: boolean
description: indicates it replaces included or upgraded option
example: false
travellers:
maxItems: 2147483647
minItems: 1
type: array
items:
"$ref": "#/components/schemas/Traveller"
prices:
type: array
items:
"$ref": "#/components/schemas/Price"
downstreamRefs:
maxItems: 2147483647
minItems: 1
type: array
items:
"$ref": "#/components/schemas/DownstreamRef"
discriminator:
propertyName: category
CabinBoardRate:
required:
- boardType
- cabinType
- sequenceNumber
- travellers
type: object
properties:
sequenceNumber:
type: string
example: '1'
cabinType:
"$ref": "#/components/schemas/CabinType"
boardType:
type: string
enum:
- A24
- AB
- AI
- AI+
- BB
- CB
- FB
- FB+
- HB
- HB+
- IT
- PI
- RO
- SC
- SC+
- SSC
- GT06-AI
rateCode:
type: string
example: TUI
travellers:
maxItems: 2147483647
minItems: 1
type: array
items:
"$ref": "#/components/schemas/TravellerRef"
prices:
"$ref": "#/components/schemas/PriceDetail"
cabins:
type: array
items:
"$ref": "#/components/schemas/Cabin"
CapacityAssociation:
required:
- code
type: object
properties:
code:
maxLength: 5
minLength: 1
type: string
description: SSR code
example: BG25
individualCapacity:
type: integer
description: Value is provided by downstream options provider system
format: int32
example: 5
capacityPoints:
type: integer
description: Configured value within the application
format: int32
example: 1
CapacityGroup:
required:
- code
- ssrAssociations
- type
type: object
properties:
code:
maxLength: 5
minLength: 1
type: string
description: Capacity group code configured within the application
example: SPEQ
type:
type: string
example: SHARED
enum:
- UNLIMITED
- INDIVIDUAL
- SHARED
sharedCapacity:
type: integer
description: Value provided by downstream options provider system that identifies
total capacity for whole group.
format: int32
example: 10
ssrAssociations:
type: array
items:
"$ref": "#/components/schemas/CapacityAssociation"
Cruise:
required:
- id
- sailings
- travellers
type: object
properties:
id:
type: string
sailings:
maxItems: 2147483647
minItems: 1
type: array
items:
"$ref": "#/components/schemas/Sailing"
travellers:
maxItems: 2147483647
minItems: 1
type: array
items:
"$ref": "#/components/schemas/TravellerRef"
prices:
"$ref": "#/components/schemas/PriceDetail"
CruiseItinerary:
required:
- code
type: object
properties:
code:
type: string
example: DIS2
name:
type: string
example: Treasures of the Mediterranean
itineraryGroup:
"$ref": "#/components/schemas/CruiseItineraryGroup"
days:
type: array
items:
"$ref": "#/components/schemas/CruiseItineraryDay"
CruiseItineraryDay:
required:
- dayNo
type: object
properties:
code:
type: string
example: DAY1_DESC
dayNo:
type: integer
format: int32
example: 1
portVisits:
type: array
items:
"$ref": "#/components/schemas/PortVisit"
CruiseItineraryGroup:
required:
- code
- name
type: object
properties:
code:
type: string
example: '123'
name:
type: string
example: Group name
DownstreamRef:
required:
- id
- itemType
- system
type: object
properties:
id:
type: string
example: Aae88613d5b8665238a124059d1e77774
type:
type: string
itemType:
type: string
example: EXTERNAL/INTERNAL
enum:
- INTERNAL
- EXTERNAL
- MIXED
system:
type: string
example: TUI_NR_ATCOM
enum:
- TUI_NR_ATCOM
Duration:
required:
- checkInDate
- checkOutDate
type: object
properties:
checkInDate:
type: string
format: date
example: '2023-06-07'
checkInTime:
"$ref": "#/components/schemas/LocalTime"
checkOutDate:
type: string
format: date
example: '2023-06-14'
checkOutTime:
"$ref": "#/components/schemas/LocalTime"
Event:
required:
- code
- id
- travellers
type: object
properties:
id:
type: string
code:
type: string
example: GALA_DINNER
name:
type: string
example: Gala Dinner
itineraryDay:
type: integer
format: int32
travellers:
maxItems: 2147483647
minItems: 1
type: array
items:
"$ref": "#/components/schemas/TravellerRef"
prices:
maxItems: 2147483647
minItems: 1
type: array
items:
"$ref": "#/components/schemas/Price"
Flight:
required:
- directions
- id
- prices
type: object
properties:
id:
type: string
directions:
maxItems: 2
minItems: 1
type: array
items:
"$ref": "#/components/schemas/FlightDirection"
prices:
"$ref": "#/components/schemas/PriceDetail"
FlightDirection:
required:
- id
- prices
- segments
- travellers
- type
type: object
properties:
duration:
type: integer
description: duration in minutes
format: int32
example: 123
id:
type: string
type:
type: string
enum:
- OUTBOUND
- INBOUND
travellers:
type: array
items:
"$ref": "#/components/schemas/Traveller"
segments:
type: array
items:
"$ref": "#/components/schemas/FlightSegment"
downstreamRefs:
type: array
items:
"$ref": "#/components/schemas/DownstreamRef"
prices:
"$ref": "#/components/schemas/PriceDetail"
FlightSegment:
required:
- arrivalDate
- arrivalPoint
- arrivalTime
- capacityGroups
- departureDate
- departurePoint
- departureTime
- duration
- flightNo
- id
- marketingCarrier
- operatingCarrier
- sectors
- specialServiceRequests
type: object
properties:
departureDate:
type: string
format: date
example: '2024-03-28'
departureTime:
"$ref": "#/components/schemas/LocalTime"
arrivalDate:
type: string
format: date
example: '2024-03-29'
arrivalTime:
"$ref": "#/components/schemas/LocalTime"
id:
type: string
operatingCarrier:
maxLength: 3
minLength: 2
type: string
example: TU
marketingCarrier:
maxLength: 3
minLength: 2
type: string
example: TU
flightNo:
pattern: "\\d{1,4}"
type: string
description: if value will come with spaces it will be trimmed, e.g. " 111"->"111"
departurePoint:
"$ref": "#/components/schemas/Point"
arrivalPoint:
"$ref": "#/components/schemas/Point"
duration:
type: integer
description: Duration in minutes
format: int32
example: 123
sectors:
type: array
items:
"$ref": "#/components/schemas/Sector"
specialServiceRequests:
type: array
items:
oneOf:
- "$ref": "#/components/schemas/BaseOption"
- "$ref": "#/components/schemas/BaggageOption"
- "$ref": "#/components/schemas/SeatsOption"
capacityGroups:
type: array
items:
"$ref": "#/components/schemas/CapacityGroup"
cabinClass:
type: string
example: M
bookingClass:
type: string
example: M
sourcingSystem:
type: string
example: MULTICOM
LocalTime:
type: object
properties:
hour:
type: integer
format: int32
minute:
type: integer
format: int32
second:
type: integer
format: int32
nano:
type: integer
format: int32
example: '11:00:00'
MetaInformation:
required:
- agentId
- brand
- businessRelationship
- channel
- currency
- decoratedContent
- locale
- market
type: object
properties:
locale:
pattern: "\\w{2}\\_\\w{2}"
type: string
example: nl_BE
market:
type: string
example: BE
enum:
- NL
- BE
- FR
- MA
- UK
- IE
- DE
- PL
- CH
- AT
- SE
- 'NO'
- DK
- FI
brand:
type: string
example: TUI
enum:
- TUI
- TUIFLY
- VIP
- FIRST_CHOICE
- CRYSTAL_SKI
- MARELLA_CRUISE
- RIVER_CRUISE
channel:
type: string
example: WEB
enum:
- WEB
- PARTNERS
- MOBILE
businessRelationship:
type: string
example: B2C
enum:
- B2B
- B2C
decoratedContent:
type: boolean
description: If this flag is set to true, the response will contain SSR
descriptions with the requested local. The default behavior is decoratedContent=false
example: false
currency:
"$ref": "#/components/schemas/Currency"
agentId:
type: string
Point:
required:
- codes
- name
- type
type: object
properties:
codes:
type: array
items:
"$ref": "#/components/schemas/PointCode"
name:
type: string
example: London Heathrow
type:
type: string
enum:
- HOTEL
- AIRPORT
- PORT
- POI
- RESORT
- CITY
- DESTINATION
- REGION
- COUNTRY
- CONTINENT
PointCode:
required:
- code
- type
type: object
properties:
code:
type: string
example: LHR
type:
type: string
example: IATA
PortVisit:
required:
- port
type: object
properties:
port:
"$ref": "#/components/schemas/Point"
portInTime:
"$ref": "#/components/schemas/LocalTime"
portOutTime:
"$ref": "#/components/schemas/LocalTime"
Sailing:
required:
- cabinBoardRates
- duration
- itinerary
- ship
type: object
properties:
id:
type: string
ship:
"$ref": "#/components/schemas/Ship"
itinerary:
"$ref": "#/components/schemas/CruiseItinerary"
cabinBoardRates:
type: array
items:
"$ref": "#/components/schemas/CabinBoardRate"
duration:
"$ref": "#/components/schemas/Duration"
theme:
"$ref": "#/components/schemas/Theme"
serviceBundles:
type: array
items:
"$ref": "#/components/schemas/ServiceBundle"
excursions:
type: array
items:
"$ref": "#/components/schemas/ShoreExcursion"
events:
type: array
items:
"$ref": "#/components/schemas/Event"
supplements:
type: array
items:
"$ref": "#/components/schemas/Supplement"
SeatsOption:
required:
- category
- code
- downstreamRefs
- id
- travellers
type: object
allOf:
- "$ref":
# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/tui-group/refs/heads/main/openapi/tui-group-tui-cruise-cabin-availability-openapi.yml