Skip to main content

Multi-Room Support for GDS Segments

Introduction

Multi-room shopping and booking is a feature supported for multi-room reservations from Sabre Global Distribution System (GDS) suppliers. This guide describes how to best utilize multi-room shopping and booking for GDS suppliers, as well as any limitations associated with this feature.

Benefits

  • Book multiple rooms with a single request
  • Manage all reservations under one confirmation number
  • Book multiple rooms for several guests and get immediate confirmations/rejections from the property based on availability, instead of booking them one at a time to see if the property will be able to accommodate all
  • For stateless (REST) customers – confirm or reject all rooms in one request, instead of having to cancel other reservations later if the number of rooms available is less than required

Supported versions

The following APIs and versions support shopping/booking multi-room segments for GDS chains in Content Services for Lodging (CSL):

Shopping

API Name Versions Formats
Get Hotel Availability v3, v4 REST and SOAP
Get Hotel Details v2, v3 REST and SOAP
Hotel Price Check v3, v4 REST and SOAP
Get Hotel Lead Rate v3, v4 REST and SOAP
Get Hotel Rate Info v3, v4 REST and SOAP

Booking

API Name Versions Formats Segment Types
Update Itinerary All active versions SOAP CSL
Enhanced Hotel Book v2.2.0 SOAP Legacy and CSL
All other versions SOAP Only CSL
Update Passenger Name Record 1.1.0 REST and SOAP Legacy and CSL
All other versions REST and SOAP Only CSL
Create Passenger Name Record v2.4.0 REST and SOAP Legacy and CSL
All other versions REST and SOAP Only CSL

General rules

  • Both SABRE and GLOBAL hotel codes can be used
  • Each Room element must have the same Adults and Children configuration
  • Only the same Guest configuration can be booked across multiple rooms
  • All room indexes must be sequentially added. If you’re requesting for 3 rooms, all indexes - 1, 2, and 3, must be present in the request.
  • You cannot book different room types in the same request. This will require 2 different sell requests and will create 2 different segments in the Passenger Name Record (PNR).
  • Due to limitations with supplier connectivity, when you shop for multiple rooms, we cannot guarantee that the property has all required number of rooms:
    • If the number of rooms are available, your sell will succeed and you will have a single segment in the PNR with multiple rooms
    • If the number of room are unavailable, your sell will be rejected and you will have a UC segment in the PNR
  • Some chains may support multi room bookings only in certain properties. Such properties will error out at sell initiate.

Shopping

Request

Ensure you’re asking for multiple-rooms in the initial shopping request by including multiple Room elements in the request:

REST example:

{
  "GetHotelDetailsRQ": {
    "SearchCriteria": {
      "HotelRefs": {
        "HotelRef": {
          "HotelCode": "100072188",
          "CodeContext": "GLOBAL"
        }
      },
      "RateInfoRef": {
        "StayDateTimeRange": {
            "StartDate": "2022-07-20",
            "EndDate": "2022-07-22"
        },
        "Rooms": {
          "Room": [
            {
              "Index": 1,
              "Adults": 1,
              "Children": 1,
              "ChildAges": "1"
            },
             {
              "Index": 2,
              "Adults": 1,
              "Children": 1,
              "ChildAges": "2"
            }
          ]
        },
        "RateSource": "100"
      }
    }
  }
}

SOAP example:

<GetHotelDetailsRQ xmlns="http://services.sabre.com/hotel/details/v2_0_0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0.0" xsi:schemaLocation="http://services.sabre.com/hotel/details/v2_0_0 GetHotelDetailsRQ_v2.0.0.xsd">
    <SearchCriteria>
        <HotelRefs>
            <HotelRef HotelCode="100072188" CodeContext="GLOBAL"/>
        </HotelRefs>
        <RateInfoRef CurrencyCode="USD" PrepaidQualifier="IncludePrepaid" RefundableOnly="true">
            <StayDateRange StartDate="2022-06-10" EndDate="2022-06-12"/>
            <Rooms>
                <Room Index="1" Adults="1" Children="0"/>
                <Room Index="2" Adults="1" Children="0"/>
            </Rooms>
            <InfoSource>100</InfoSource>
        </RateInfoRef>
    </SearchCriteria>
</GetHotelDetailsRQ>

Response

In both REST and SOAP responses, the RateInfos element displays the sum of the rates across all rooms. For example, if a room costs $100 and you requested 2 rooms, the RateInfos element will show the rates as $200.

This makes the total information available to you at a quick glance:

Sample response

For each RateInfo element in the response, there can also be multiple Room elements. Each room element returns information corresponding to the single room rate:

Sample response

Room elements can be linked to RateInfos (and to each other) based on the rateKey:

Sample response

Errors during shopping

If you request a greater number of rooms for a chain than what is allowed, you will receive the below error:

<ns7:Warning timeStamp="2022-03-21T07:38:37.178-05:00" type="Application">
          <ns7:SystemSpecificResults>
            <ns7:Message code="WARN.0106">Too many rooms/units</ns7:Message>
            <ns7:Message code="WarningDetails">100-Max 4 rooms currently supported for YX chain</ns7:Message>
          </ns7:SystemSpecificResults>
        </ns7:Warning>

Booking

Request

Multi-room booking is enabled on any API that supports booking multi-room CSL segments. The only difference between a single and multi-room sell request is adding two (2) Room elements in the request:

Important! Each room must have at least one (1) Guest information element.

<EnhancedHotelBookRQ xmlns="http://services.sabre.com/sp/enhanced/hotel/book/v2_2" version="2.2.0" bookGDSviaCSL="false">
    <BookingInfo>
        <BookingKey>8408cbaa-38c0-40a2-955f-28a92aeebd7d</BookingKey>
    </BookingInfo>
    <Rooms>
        <Room RoomIndex="1">
            <Guests>
                <Guest FirstName="TEST" LastName="BOOKING" Email="test.booking@sabre.com" Type="10" Index="1" LeadGuest="true">
                    <Contact Phone="2025550137"/>
                </Guest>
            </Guests>
        </Room>
        <Room RoomIndex="2">
            <Guests>
                <Guest FirstName="TEST" LastName="BOOKING" Email="test.booking@sabre.com" Type="10" Index="1" LeadGuest="true">
                    <Contact Phone="2025550137"/>
                </Guest>
            </Guests>
        </Room>
    </Rooms>
    <PaymentInformation Type="GUARANTEE">
        <FormOfPayment>
            <PaymentCard>
                <PaymentType>CC</PaymentType>
                <CardCode>VI</CardCode>
                <CardNumber>XXXXXXXXXXXXX1111</CardNumber>
                <ExpiryMonth>XX</ExpiryMonth>
                <ExpiryYear>XXXX</ExpiryYear>
                <FullCardHolderName>
                    <FirstName>TEST</FirstName>
                    <LastName>BOOKIGN</LastName>
                    <Email>test.booking@sabre.com</Email>
                </FullCardHolderName>
                <CSC>123</CSC>
                <Address>
                    <CityName>Irving</CityName>
                    <CityCodes>
                        <Code codeContext="IATA">DFW</Code>
                    </CityCodes>
                    <StateProvince code="TX"/>

                    <PostCode>75063</PostCode>
                    <CountryCodes>
                        <Code>US</Code>
                    </CountryCodes>
                </Address>
                <Phone>
                    <PhoneNumber>19729298400</PhoneNumber>
                </Phone>
            </PaymentCard>
        </FormOfPayment>
    </PaymentInformation>
</EnhancedHotelBookRQ>

Response

A typical response will look like:

1.1DZIK/WIELGACHNY*ABC123
1  HHL SI HK2 DFW IN01JUN W-OUT05JUN   4NT     499 SH    /DCSI
ERATON DFW AIRPOR 2AABS00 -1/  132.05USD/RC-¤¤¤-Z2H-R/CMN-C/CMT
-COMMISSIONABLE/AA/GVIXXXXXXXXXXXX1111EXP XXXXX-DZIK/C01D/SI-CF
-92881760-  

Resources