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.

OpenAPI Specification

tui-group-tui-cruise-cabin-availability-openapi.yml Raw ↑
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