Information About ‘RoomCategory’ And ‘Id’ Parameters

Description not matching room code

With participation level 2, for some hotels we return more than one room category (‘Standard’, ‘Deluxe’, ‘Superior’, etc.). In some cases you might be requesting the price for a single room and the description of the room category returned can appear to be for another room type. For example:

<HotelRooms>
      <HotelRoom Code = "SB" NumberOfRooms = "1"/>
     </HotelRooms>
     <RoomCategories>
      <RoomCategory Id = "001:910:27528:S27106:42120:142575">
       <Description><![CDATA[Standard Double]]></Description>
       <ItemPrice CommissionPercentage = "0.00" Currency = "EUR">74.00</ItemPrice>
       <Confirmation Code = "IM"><![CDATA[AVAILABLE]]></Confirmation>
       <Meals>
        <Basis Code = "B"><![CDATA[Breakfast]]></Basis>
        <Breakfast Code = "F"><![CDATA[Full]]></Breakfast>
       </Meals>
      </RoomCategory>
     </RoomCategories>

We may also return rooms that do not specify the bedding configuration:

<HotelRooms>
      <HotelRoom Code = "DB" NumberOfRooms = "1"/>
     </HotelRooms>
     <RoomCategories>
      <RoomCategory Id = "001:91F:32281:S32792:50116:151503">
       <Description><![CDATA[Standard Room]]></Description>
       <ItemPrice CommissionPercentage = "0.00" Currency = "EUR">208.50</ItemPrice>
       <Confirmation Code = "IM"><![CDATA[AVAILABLE]]></Confirmation>
       <Meals>
        <Basis Code = "B"><![CDATA[Breakfast]]></Basis>
        <Breakfast Code = "F"><![CDATA[Full]]></Breakfast>
       </Meals>
      </RoomCategory>
   </RoomCategories>

In cases such as this, we cannot guarantee that your customers will be provided with the room type requested, e.g.: a twin room may be provided even though a double was requested.

In these cases, we offer all room types that can accommodate your customers; e.g.: if you request a single room we may also offer a twin or double room and if you request a double room we may also offer a twin or a triple room. This will not affect the room code you have booked so you will still use the room code SB for one person even if the <Description> contains the word ‘Double’ or ‘Twin’ and the price will be based for single occupancy.

Identical rooms with different price

It is possible to receive an identical room description for the same property twice, but with a different price; for example:

<RoomCategory Id = "002:IHG:EX:OFDKS:GTA:GTA:STN">
    <Description><![CDATA[Standard Double]]></Description>
    <ItemPrice Currency = "GBP" NoOfferDiscount = "true">62.75</ItemPrice>
    <Confirmation Code = "IM"><![CDATA[AVAILABLE]]></Confirmation>
    <Meals>
        <Basis Code = "N"><![CDATA[Room only]]></Basis>
    </Meals>
</RoomCategory>
<RoomCategory Id = "002:IHG:EX:OFDKS:GT2:GT2:STN">
    <Description><![CDATA[Standard Double]]></Description>
    <ItemPrice Currency = "GBP" NoOfferDiscount = "true">53.75</ItemPrice>
    <Confirmation Code = "IM"><![CDATA[AVAILABLE]]></Confirmation>
    <Meals>
        <Basis Code = "N"><![CDATA[Room only]]></Basis>
    </Meals>
</RoomCategory>

In this case the charge conditions will be different and one of the returned room categories will have stricter cancellation conditions than the other.

Missing <RoomDescription> paremeter

It is possible that on occasions the <RoomDescription> parameter is not present for all room category IDs; for example:

<RoomCategories>
    <RoomCategory Id = "001:BEN1">
        <Description><![CDATA[Standard]]></Description>
        <RoomDescription><![CDATA[All of the large bedrooms in the hotel are beautifully furnished with silk panelled walls with each room featuring individual designs in varying colour schemes.  Standard rooms have queen beds.]]></RoomDescription>
    </RoomCategory>
    <RoomCategory Id = "001:BEN2">
        <Description><![CDATA[King]]></Description>
        <RoomDescription><![CDATA[All the large King bedrooms in the hotel are beautifully furnished with silk panelled walls with each room featuring individual designs in varying colour schemes.]]></RoomDescription>
    </RoomCategory>
    <RoomCategory Id = "002:HILTON:WA:64235:XXX:XXX:A02">
        <Description><![CDATA[Deluxe Twin]]></Description>
    </RoomCategory>
</RoomCategories>

In the above example the <RoomDescription> parameter is present for the first two room category IDs but not for the third one. In this case the room description should be taken from the <Reports> Parameter, <Report Type = "rooms">, that is being returned with the same <SearchItemInformationResponse> for the relevant property:

<Reports>
    <Report Type = "location"><![CDATA[The Bentley London, A Waldorf Astoria Hotel is located in the heart of Kensington on an elegant tree lined avenue, within easy reach of the Kings Road.]]></Report>
    <Report Type = "rooms"><![CDATA[All of the large bedrooms in the hotel are beautifully furnished with silk panelled walls with each room featuring individual designs in varying colour schemes.]]></Report>
    <Report Type = "restaurant"><![CDATA[The hotel has two main restaurants. 'Peridot' is an informal and spacious restaurant and '1880' offers more formal dining.]]></Report>
    <Report Type = "exterior"><![CDATA[The building was originally made up of several grand Victorian terraced mansion houses, which have now been carefully restored to their former grandeur.]]></Report>
    <Report Type = "lobby"><![CDATA[The medium sized lobby is opulently furnished with Louis XV furniture.]]></Report>
    <Report Type = "general"><![CDATA[The hotel also features a luxurious spa area which includes a fully equipped gymnasium.]]></Report>
</Reports> 

General information about the room category

Room categories are defined by each property and while some are common to many hotels; e.g.: ‘Standard Rooms’, ‘Deluxe Rooms’, etc., the majority returned by the XML responses are specific to individual properties; e.g.: ‘Boutique Deluxe-Aqua View’.  

With the <SearchHotelPriceResponse> and the <SearchItemInformationResponse> we always return the following information (for clients on participation levels 1 and 2):

<RoomCategory Id="002:WY:RA:18535:XXX:XXX:BQ1">
    <Description><![CDATA[Standard Queen]]></Description>
</RoomCategory>

The value for the ‘Id’ attribute in conjunction with the value for the <Description> parameter only apply to the <Item> they are being returned for. It should not be assumed that when the value for another <Item> is the same (Id="002:WY:RA:18535:XXX:XXX:BQ1") that this will also refer to a ‘Standard Queen’ room. As the values are maintained by both, our contracting teams and our suppliers it is not possible to provide a mapping table covering all combinations.

Format and value of the "Id" attribute

For clients on participation levels 1 or 2 we return an Id-attribute with some XML response messages; e.g.: <SearchHotelPriceResponse>, <SearchItemInformationResponse>; etc. If the value of the Id-attribute starts with ‘001’ then the property is retrieved from the GTA static and margin contracts; if the value of the Id-attribute starts with anything else but ‘001’ then it is retrieved by one of our dynamic inventory suppliers. Examples of the current format and values for the ‘Id’ attribute are:

  • Id="001:ABS1:12818:S12200:14381:59326"
  • Id="002:IHG:IC:HFRA:GT3:GT3:TOG"
  • Id="003:BONOTEL2:NB:191-1343:1:1:3-5"
  • Id="004:DS:TDS:CAN-DONA:NET:NET:DTA"
  • Id="005:CAESARS:CAESARS:36933:GTA:GTA:2QUEEN"
  • Id="006:ATP1:ATP1:880-14431:4-1:4-1:40039-1"
  • Id="007:HOS:262171:20190120|20190121|W|102|449|DBL.ST|OFFER-SEMFLEXRO|RO||1~2~0||N@:xx:27198"

In our schema the ‘Id’ attribute is defined as follows:

<xsd:attributeGroup name="a_RoomCategory">
          <xsd:attribute name="Id" type="xsd:string" use="optional"/>
</xsd:attributeGroup>

The schema does not dictate any specific format and values, and the current format and values may change at any time without notice. Also our XML schema does not have a limit in the length of characters that are in the rate key. Therefore we do not recommend defining any rules around the current format and values of the ‘Id’ attribute.

For non-GTA Id-attributes there is also a discrepancy between the value of the ID attribute we return for the same property via the <SearchHotelPriceResponse> and the <SearchItemInformationResponse>.

<SearchHotelPriceResponse>:

                   <RoomCategories>
                        <RoomCategory Id = "002:IHG:EX:BERCW:GT2:GT2:TWN">
                            <Description><![CDATA[Standard Twin Non Smoking]]></Description>
                            <ItemPrice Currency = "EUR" NoOfferDiscount = "true">64.50</ItemPrice>
                            <Confirmation Code = "IM"><![CDATA[AVAILABLE]]></Confirmation>
                            <Meals>
                                <Basis Code = "N"><![CDATA[Room only]]></Basis>
                            </Meals>
                        </RoomCategory>
                        <RoomCategory Id = "002:IHG:EX:BERCW:GTA:GTA:TWN">
                            <Description><![CDATA[Standard Twin Non Smoking]]></Description>
                            <ItemPrice Currency = "EUR" NoOfferDiscount = "true">73.00</ItemPrice>
                            <Confirmation Code = "IM"><![CDATA[AVAILABLE]]></Confirmation>
                            <Meals>
                                <Basis Code = "N"><![CDATA[Room only]]></Basis>
                            </Meals>
                        </RoomCategory>
                        <RoomCategory Id = "002:IHG:EX:BERCW:GT2:GT2:STN">
                            <Description><![CDATA[Guestroom Double or Twin]]></Description>
                            <ItemPrice Currency = "EUR" NoOfferDiscount = "true">64.50</ItemPrice>
                            <Confirmation Code = "IM"><![CDATA[AVAILABLE]]></Confirmation>
                            <Meals>
                                <Basis Code = "N"><![CDATA[Room only]]></Basis>
                            </Meals>
                        </RoomCategory>
                        <RoomCategory Id = "002:IHG:EX:BERCW:GTA:GTA:STN">
                            <Description><![CDATA[Guestroom Double or Twin]]></Description>
                            <ItemPrice Currency = "EUR" NoOfferDiscount = "true">73.00</ItemPrice>
                            <Confirmation Code = "IM"><![CDATA[AVAILABLE]]></Confirmation>
                            <Meals>
                                <Basis Code = "N"><![CDATA[Room only]]></Basis>
                            </Meals>
                        </RoomCategory>
                   </RoomCategories>

 <SearchItemInformationResponse>:

 Example a)

<RoomCategories>
                            <RoomCategory Id = "002:IHG:EX:BERCW:XXX:XXX:TWN">
                                <Description><![CDATA[Standard Twin Non Smoking]]></Description>
                            </RoomCategory>
                                <RoomCategory Id = "002:IHG:EX:BERCW:XXX:XXX:STN">
                                   <Description><![CDATA[Guestroom Double or Twin]]></Description>
                            </RoomCategory>
                        </RoomCategories>

Example b)

<RoomCategories>
                            <RoomCategory Id = "001:AME:XXX:XXX:XXX:44708">
                                <Description><![CDATA[Standard Single]]></Description>
                            </RoomCategory>
                          <RoomCategory Id = "001:AME:XXX:XXX:XXX:44710">
                              <Description><![CDATA[Standard Twin]]></Description>
                            </RoomCategory>
                          <RoomCategory Id = "001:AME:XXX:XXX:XXX:129839">
                              <Description><![CDATA[Standard Double]]></Description>
                            </RoomCategory>
                        </RoomCategories>

In this case the XXX:XXX means that the Id-attribute value returned with the <SearchItemInformationResponse> is valid and can be mapped against all Id-attributes returned with the <SearchHotelPriceResponse> regardless of their value in the places denoted by the XXX:XXX. If implementing a rule around this, we suggest to specify that the system should always ignore the values XXX:XXX or read them as wild cards.

Information about the "Id" attribute

With participation levels 1 and 2 we return a <RoomCategories> parameter with several sub-parameters (one of them being the ‘Id’ attribute) as part of the <SearchHotelPriceResponse> messages. This parameter is returned for all inventory, regardless of whether it is for GTA-contracted properties or for properties that we source from a third-party supplier.

The ‘Id’ attribute that is being returned as part of the <RoomCategories> parameter then needs to be used when sending any subsequent XML requests; i.e.:

  • <HotelPriceBreakdownRequest>
  • <SearchChargeConditionsRequest><ChargeConditionsHotel>
  • <AddBookingRequest>
  • The ‘Id’ attribute can then also be used as part of the <SearchHotelPriceRequest> if another price and availability check is performed shortly before placing a booking

If a hotel has more than one room categories on offer, the Item Code returned in the <SearchHotelPriceResponse> will be the code for the primary hotel set up on our system for that group:

        <SearchHotelPriceResponse>
            <HotelDetails>
                <Hotel HasExtraInfo="true" HasMap="true" HasPictures="true">
                    <City Code="LON"><![CDATA[London]]></City>
                    <Item Code="ASH2"><![CDATA[Ashburn]]></Item>
                    <LocationDetails>
                        <Location Code="G1"><![CDATA[Central]]></Location>
                    </LocationDetails>
                    <StarRating>4</StarRating>
                    <HotelRooms>
                        <HotelRoom Code="TB" NumberOfRooms="1"/>
                    </HotelRooms>
                    <RoomCategories>
                        <RoomCategory Id="001:ASH2">
                            <Description><![CDATA[Queen]]></Description>
                            <ItemPrice Currency="GBP">135.00</ItemPrice>
                            <Confirmation Code="IM"><![CDATA[AVAILABLE]]></Confirmation>
                            <Meals>
                                <Basis Code="B"><![CDATA[Breakfast]]></Basis>
                                <Breakfast Code="C"><![CDATA[Continental]]></Breakfast>
                            </Meals>
                        </RoomCategory>
                        <RoomCategory Id="001:ASH5">
                            <Description><![CDATA[Superior King]]></Description>
                            <ItemPrice Currency="GBP">154.50</ItemPrice>
                            <Confirmation Code="IM"><![CDATA[AVAILABLE]]></Confirmation>
                            <Meals>
                                <Basis Code="B"><![CDATA[Breakfast]]></Basis>
                                <Breakfast Code="C"><![CDATA[Continental]]></Breakfast>
                            </Meals>
                        </RoomCategory>
                        <RoomCategory Id="001:ASH6">
                            <Description><![CDATA[Deluxe]]></Description>
                            <ItemPrice Currency="GBP">175.50</ItemPrice>
                            <Confirmation Code="IM"><![CDATA[AVAILABLE]]></Confirmation>
                            <Meals>
                                <Basis Code="B"><![CDATA[Breakfast]]></Basis>
                                <Breakfast Code="C"><![CDATA[Continental]]></Breakfast>
                            </Meals>
                        </RoomCategory>
                    </RoomCategories>
                </Hotel>
            </HotelDetails>
        </SearchHotelPriceResponse>

In order to perform any sub-sequent search (<SearchChargeConditionsRequest>, <AddBookingRequest>, etc.) the Item Code to be entered will need to be the Item Code returned in the <SearchHotelPriceRequest> as well as entering the ‘Id’ attribute for the room category which needs to be booked. In the above example, the Item Code to use would be ‘ASH2’ while the ‘Id’ attributes to use would be either ‘001:ASH2’ for queen room category or ‘001:ASH5’ for superior king room category or ‘001:ASH6’ for deluxe category.

Requests with multiple categories

It is not possible to send a <SearchHotelPriceRequest>, <SearchChargeConditionsRequest>, <HotelPriceBreakdownRequest> or  <AddBookingRequest> with more than one room category. If rooms with a different ‘Id’-attribute value are required these must be treated as separate booking items or separate bookings.

Docs Navigation