Table of Contents

Multi-Cabin Support (SwOTA)

Seaware supports various ways to create multi-cabin booking, but OTA specifications limit what can be done via OTA. Here is a short description of multi-cabin support by SwOTA.

Message Support

OTA message Multi-cabin support description
OTA_CruiseBookRQ To book several cabins of one or more categories pass several SelectedCategory nodes with SelectedCabin contains GuestRefNumbers attributes.

Example:
xml<br/><SailingInfo><br/> <SelectedSailing VoyageID="RAINBOWLAND0123"><br/> <CruiseLine/><br/> </SelectedSailing><br/> [..]<br/> <SelectedCategory PricedCategoryCode="SS1"><br/> <SelectedCabin CabinNumber="10218" GuestRefNumbers="1 2" Status="36"/><br/> <SelectedCabin CabinNumber="10220" GuestRefNumbers="3 4" Status="36"/><br/> </SelectedCategory><br/> <SelectedCategory PricedCategoryCode="SS2"><br/> <SelectedCabin CabinNumber="10003" GuestRefNumbers="5" Status="36"/><br/> </SelectedCategory><br/></SailingInfo><br/>

The response will contain separate SelectedCategory node for each cabin, because they may have different attributes. Attribute GuestRefNumbers also returned in SelectedCabin node.
Category availability Category availability searches (OTA_CruiseCategoryAvail and OTA_CruiseSailAvail with TPA_Extensions/@IncludeCategoriesInd="true") can return all available categories regardless of party size, allowing bookings to be distributed across multiple cabins.

By default, the API returns categories for multi-cabin distribution. If you need strict occupancy limits (only categories matching party size), include: <TPA_Extensions IgnoreOccupancy="false"/>
OTA_CruiseCabinHoldRQ Similarly to OTA_CruiseBookRQ, can accept multiple category/cabin nodes.

Booking Multiple Cabins Example

Here's a detailed example of booking multiple cabins across different categories:

<OTA_CruiseBookRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.0">
  <POS>[..]</POS>
  <SailingInfo>
    <SelectedSailing VoyageID="VOYAGE123">
      <CruiseLine ShipCode="SHIP1"/>
    </SelectedSailing>
    <!-- First category with 2 cabins -->
    <SelectedCategory PricedCategoryCode="A">
      <SelectedCabin CabinNumber="101" GuestRefNumbers="1 2" Status="36"/>
      <SelectedCabin CabinNumber="102" GuestRefNumbers="3 4" Status="36"/>
    </SelectedCategory>
    <!-- Second category with 1 cabin -->
    <SelectedCategory PricedCategoryCode="B">
      <SelectedCabin CabinNumber="201" GuestRefNumbers="5 6" Status="36"/>
    </SelectedCategory>
  </SailingInfo>
  <ReservationInfo>
    <GuestDetails>
      <GuestDetail><!-- Guest 1 details --></GuestDetail>
      <GuestDetail><!-- Guest 2 details --></GuestDetail>
      <GuestDetail><!-- Guest 3 details --></GuestDetail>
      <GuestDetail><!-- Guest 4 details --></GuestDetail>
      <GuestDetail><!-- Guest 5 details --></GuestDetail>
      <GuestDetail><!-- Guest 6 details --></GuestDetail>
    </GuestDetails>
  </ReservationInfo>
</OTA_CruiseBookRQ>

Controlling Multi-Cabin Behavior

By default, the API supports multi-cabin bookings. You can control this behavior per request:

<!-- Single cabin mode (respect occupancy limits) -->
<TPA_Extensions IgnoreOccupancy="false"/>

<!-- Multi-cabin mode (default if setting is Y) -->
<!-- Omit the attribute or set to true -->