Page Summary
-
The root element for hotel price transaction messages is
<Transaction>, which must contain either<PropertyDataSet>or<Result>and can be up to 100 MB. -
<Transaction>includes attributes for a uniqueid, optionalpartner, and a requiredtimestampfor processing order. -
<PropertyDataSet>is an optional container within<Transaction>for itinerary-independent room and package metadata, requiring at least one of<Property>or<Result>. -
<Result>is an optional child element of<Transaction>used to provide pricing and availability data, and can also remove inventory using the<Unavailable>element. -
<RoomData>and<PackageData>elements within<PropertyDataSet>define metadata for rooms and room bundles, respectively, with various child elements for features, descriptions, and terms.
This page provides a reference for the XML-based Transaction messages.
<Transaction>
The root element of a Transaction message
is <Transaction>. It is a container for descriptive information about
rooms and packages and pricing and availability for rooms and packages.
The <Transaction> element appears in the following place in the
Transaction message XML hierarchy:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Messages that use <Transaction> as the root element require at least one
child element. Transaction messages can have any number of child elements, as
long as the total message size does not exceed 100 MB.
Syntax
The <Transaction> element uses the following syntax:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="times>tamp<" id="transaction_ID"
!-- Defines data >abo<ut a room or pa>ckage (Room< Bundle) --
Pr>oper<tyDataSet
...
/PropertyDataSet
!-- Updates/sets prices and av>ail<ability for rooms and Room Bundles --
!-- (Als>o r<emoves> itinerarie<s from >in<ventory) --
> Result
...
/Result
/Transaction
Attributes
The <Transaction> element has the following attributes:
| Attribute | Required? | Type | Description |
|---|---|---|---|
| id | Required | string | A unique identifier for each Transaction message. |
| partner | Optional | string | The partner account that the Transaction message is for. You typically use this if your backend provides price feeds for multiple partner accounts. This string value is the "Partner key" value listed on the Account settings page in Hotel Center. |
| timestamp | Required | DateTime | The moment in time that the Transaction message was sent. Any message sent with a timestamp within the prior 24 hours will be processed, and those that haven't will be discarded. Messages are processed in order of |
Child elements
The <Transaction> element has the following child elements:
| Child Element | Required? | Type | Description |
|---|---|---|---|
| <PropertyDataSet> | Optional* | <PropertyDataSet> |
Describes a specific room and Room Bundles. You typically use this element in a separate Transaction message to define shared values for Room Bundles and reduce the size of your Transaction messages. |
| <Result> | Optional* | <Result> |
Pricing data for a room's itinerary or a
|
* At least one of <PropertyDataSet> or <Result>
is required. |
|||
Examples
Room data
The following example defines room data in a Transaction message:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-1>8T1<6:20:00-04:00&q>uot; <id=">;42&<quot;
P>roper<tyDataSe>t
P<ropert>y1234/<Propert>y
R<oomD>ata
< RoomID5440OF/RoomID
Name
Text te>xt="<Single King Bed Room" language="en>"/<
> Tex<t text=&quo>t;Simple <Lit de Roi" language="fr"/
/Name
Description
Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
and down comforters (bedspreads). City view. 300 square feet. Desk with
rolling chair. Multi-line phone with voice mail>. Cable/s<atellite TV with
complimentary HBO and pay movies." language=&quo>t;en&qu<ot;/
> Text t<ext=&quo>t;Un très< grand >lit avec ma<telas à plateau-coussin, ..." langu>age="f<r"/
/Description
PhotoURL
> Cap<tion
> Te<xt >text="Bathroom View" language=&qu<ot;e>n"</
> Text< text=&q>u<ot;La sal>le de< baines&q>uot<; language=">;<fr"/
> /Caption
URLhttp://www.foo.com/static/bar/image1234.jpg/URL
/PhotoURL
Capacity4/Capacity
/RoomData
/PropertyDataSet
/Transaction
Pricing data
The following example defines pricing data in a Transaction message:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-2>3T1<6:20:0>0-04:<00"> id=&q<uot;42&qu>ot;
< Result
Prope<rty0607>73/Pr<operty
> RoomIDRo<omType101/>RoomI<D
P>ackageIDPa<ckage101>/Pack<ageID
> < Checkin20<18-06-10/Checkin
Ni>ghts2/<Nights
> Bas<erate currency=&qu>ot;US<D&qu>ot;27<8.33/Baserate
Tax cu>rren<cy="U>SD&qu<ot;25.12/Tax
Othe>rFees c<urrency="USD">2.00/<OtherFees
Allowabl>ePo<intsOfS>ale<
> Poin<tOfSale >id=&qu<ot;site1&>quot;</
>/AllowableP<ointsOf>Sale
< /Result>
Result
< Proper>ty052<213/Pro>perty
<RoomIDRo>omTyp<e101/R>o<omID
> Pac<kageIDPackage101/Packag>eID
< >Checkin2018-<06-10/Checkin
>Night<s2/N>ights<
Baserate currency=&>quot<;USD">299.9<8/Baserate
Tax cu>rrency=<"USD"26.42/T>ax
<OtherFees currency=&quo>t;USD<"2.00/OtherFees
> Al<lowablePoints>OfSale
< PointOf>Sale< id="otto>"/<
P>ointOfSal<e id="simon"/
/AllowablePoin>tsOfSal<e
Mil>esInclu<ded
NumberO>fMiles1200/<NumberOfMiles
> Pro<vider
>Tex<t langu>a<ge="en&>quot; text="United Airlines"/
/Provider
LoyaltyCampaignIDmy_campaign/LoyaltyCampaignID
/MilesIncluded
/Result
/Transaction
Nightly rates
The following example defines pricing data for 1 to 7 nights beginning June 7th, 2023:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-08-2>4T1<6:20:0>0-04:<00"> id=<"42&>quot;<
Resu>lt
Pro<perty123>4/Pro<perty
> < Checkin20<18-06-07/Checkin
Ni>ghts1/<Nights
> Bas<erate currency=&qu>ot;US<D&qu>ot;20<9.99/Baserate
Tax cu>rren<cy="U>SD&<quot;25>.12</Tax
> Ot<herFees >curr<ency=&quo>t;USD<"2>.00/OtherF<ees
/R>esult<
Res>u<lt
>Prope<rty1234/Property
Ch>eckin2<018-06-07>/Chec<kin
Nights2/Ni>ghts
< >Baser<ate currency="USD&q>uot;<419.98/Bas>era<te
>Tax< curre>ncy=&<quot;USD>&quo<t;25.12/T>ax
< OtherFees curre<ncy=&quo>t;USD<">2<.00/Oth>erFee<s
/Result
Result
> Prop<erty1234/>Prope<rty
Checkin201>8-06-<07/C>hecki<n
Nights3/Nights
> Bas<erate curr>enc<y=">;US<D">;614.<97/Baser>ate
< Tax c>urren<cy=&quo>t;USD"<;21.12/T>ax
< Other<Fees cu>rrenc<y="USD"2.00/O>therFe<es
/Res>ult
< Result
Proper>ty123<4/Pr>opert<y
Checkin2018-06-07/>Chec<kin
Ni>ght<s4/Nigh>ts
< Ba>serat<e curren>cy=&<quot;USD&>quot;<819.96/>Baserate
< Tax c>urren<cy=&qu>o<t;USD&q>uot;2<1.12/Tax
OtherFees >curren<cy=">USD&q<uot;2.00/OtherFees>
/R<esul>t
R<esult
Property1234/P>rope<rty
Ch>eck<in2018->06-<07/Che>ckin
< Nigh>ts5/<Nights
> Bas<erate c>urrency=&q<uot;USD&>quot;<999.95>/<Baserat>e
< Tax currency="USD>"2<1.12/Tax
> O<therFees currency=>"<;USD>"<;2.00/OtherFees
/Resul>t
<Result
> Pr<operty1>234</Prope>rty
< Checkin20<18-06-07/>Check<in
>Nights6/Ni<ghts
> Base<rate c>u<rrency=>"<;USD"1193.94/Baser>ate
< Tax curr>ency=<"USD"21.>12/Ta<x
> Oth<erFees currency="US>D&qu<ot;2.00/Ot>her<Fees
>/<Result
Res>ult
Property1234/Property
Checkin2018-06-07/Checkin
Nights7/Nights
Baserate currency="USD"1259.93/Baserate
Tax currency="USD"21.12/Tax
OtherFees currency="USD"2.00/OtherFees
/Result
/Transaction
Base & conditional rates
The following example shows a Transaction message that contains a base rate and a conditional rate:
<?xml version="1.0" encoding>=<"UTF-8" ?
Transaction timestamp="2023-05-1>8T1<6:20:0>0-04:<00"> id=<"42&>quot;<
Resu>lt
Pro<perty123>4/Pro<perty
> < Checkin202<3-04-10/Checkin
Nig>hts1/N<ights
> Bas<erate currency=&qu>ot;US<D&qu>ot;20<0.00/Baserate
Tax cu>rren<cy="U>SD&quo<t;20.>00/Tax
< OtherFees currency="USD"1.00/OtherFees
Rates
> !<-- The rate_rule_id is req>uired whe<n using conditional rates --
Rate rate_rule_id=&quo>t;mobile&<quot;
!-- Overr>ide ba<se rate a>nd taxes <for conditional ra>tes -<-
> B<asera>te cu<rrency>=&qu<ot;USD&>q<uot;180.00/B>aserate
Tax currency="USD"18.00/Tax
/Rate
/Rates
/Result
/Transaction
Remove inventory
The following example removes several inventories (1-night stays for several different dates) for a hotel from inventory:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2023-05-2>3T1<6:20:0>0-04:<00"> id="<42"
> Res<ult
> Property1<12358132>1/Pro<perty
> < Checkin20<23-05-23/Ch>eckin
< >Nights1/Nigh<ts
Unava>ilabl<e
NoVacancy/>
< >/Unav<ailable
Tax currency>=<"USD&>quo<t;0/Tax>
< OtherFees< currenc>y="US<D"0/>Other<Fees
>/Result
<Result
> Pr<operty>1<1235813>21/Pr<operty
>Checkin<2023-05-24>/Chec<kin
Nigh>ts1/N<ights
Unavaila>b<le
> <NoVacancy/
/Unavaila>b<le
Tax> cu<rrency=>&qu<ot;USD"<0/Tax
> OtherFees curren<cy="US>D&q>uot<;0/Oth>erFee<s
/Res>ult
!---<Sending B>asera<te is o>ptional wi<th Unava>ilabl<e --
> <Result
> P<roperty1123581321/Prope>rt<y
Che>ckin2<023-05-25/C>heckin
< Nights>1/Nig<hts
Base>rate <currency="USD>&<quot>;-1/B<aserate
Unavailable
> < NoVacanc<y/
>/<Unavailable
> Tax currency="USD"0/Tax
OtherFees currency="USD"0/OtherFees
/Result
/Transaction
<PropertyDataSet>
A container for room and package (or Room Bundle) information in a
<Transaction> message. Values set on a hotel override values set on a partner.
Google stores this information so that you do not need to define it every time
you send pricing updates.
The <PropertyDataSet> element appears in the following place in the
Transaction message XML hierarchy:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
For more information, refer to Room Bundle metadata.
Syntax
The <PropertyDataSet> element uses the following syntax:
<?xml version="1.0" encodin>g<="UTF-8&quo>t;?< Transaction ..>. <PropertyDataSet !-- (Required) ID that matches th>e Hot<el List >Feed -- < Prope>rtyhot<el_ID/Property !-- (Optional) Defines meta>data <about a >room -- Roo<mData > ...< /RoomData !-- (Optional) Defines package metadata to be paired with roo>ms (R<oom Bundles>) -- Packag<eData >...< /PackageDat>a /Pr<opertyDataSe>t ... /Transaction
Attributes
The <PropertyDataSet> element has no attributes.
Child elements
The <PropertyDataSet> element has the following child elements:
| Child Element | Required? | Type | Description |
|---|---|---|---|
| <PackageData> | Optional* | <PackageData> |
Describes a Room Bundle. This data is associated with a partner and
hotel, but not with an itinerary. This element is similar to
<RoomData>, but it describes amenities and terms that are not part
of the physical room description.
You reference the package ID in your pricing updates. For more information, refer to Room Bundle metadata. |
| <Property> | Required | string | The ID of a hotel that the associated data applies to. The
value of this element must be a string that matches the listing
<id> in your Hotel List Feed.
|
| <RoomData> | Optional* | <RoomData> |
Describes a room. This data is associated with a partner and hotel,
but not with an itinerary.
You reference the room ID in your pricing updates. |
* At least one of <PackageData> or <RoomData>
is required. |
|||
Examples
Room and package data
The following example shows both room and package data in a
<PropertyDataSet>:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-1>8T1<6:20:00-04:00&q>uot; <id=">;42&qu<ot;
Pro>perty<DataSet
> Pro<perty1>80054/<Propert>y
R<oomD>ata
< RoomID060773/RoomID
Name
Te>xt text=&<quot;Single Bed Room" language=">;en&quo<t;/
> <Text text=&>quot;Cham<bre single" language="fr&quo>t;/
< /Name
Description
Text tex>t="<;Non-smoking>" <language>="en<"/>
Te<xt text="Pas de fumiers" lan>guage="<;fr"/
/Description
P>hotoURL
< <>/span>Caption
< > Text text="Living area" lang<uage>="<en"/>
< Text tex<t="Le >chambre<" la>nguage<="fr&>quot;/
< > /Capt<ion
URLhttp://www.foo.com/static/bar/>image1234<.jpg/URL
/PhotoURL
/RoomData
Packag>eData
< >Package<IDP54321/Pa>ckageID
< Name
Text text="Breakfast Included" language="e>n"/
< Text text="Avec le petit déjeuner" language="fr"/
> /Nam<e
Desc>ription<
Text tex>t<="Includes a >delig<htful array >of <jams and jellies>.<" langu>age="en"/
Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/
/Description
BreakfastIncluded1/BreakfastIncluded
/PackageData
/PropertyDataSet
/Transaction
When you send prices and availability for this room and Room Bundle, you reference the room and package IDs in your pricing messages. The result is that you greatly reduce the size of your messages, and also reduce the amount of errors you might encounter due to duplicate data. For more information, refer to Room Bundle metadata.
<RoomData>
Defines itinerary-independent metadata about rooms, and by extension, Room
Bundles (since Room Bundles are rooms plus additional amenities). Use
<RoomData> to reduce the repetition of descriptive data in your Price
Feed.
The <RoomData> element appears in the following place in the
Transaction message XML hierarchy:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
<RoomData> elements contain information that is associated with a
partner and hotel, but not with an itinerary. The intended purpose is for all
non-itinerary data.
The <RoomData> element is similar to <PackageData>, but it describes
the physical room rather than amenities and terms of a package. You use
<RoomData> and <PackageData> in combination to provide details about
Room Bundles. For individual rooms that are not part of a package, use just
<RoomData>.
You can define both the <RoomData> and <PackageData> elements for
the same room or Room Bundle. When Google displays that room or package in the
search results, it will include the descriptions from both, separated by a
hyphen.
For more information, refer to Room Bundle metadata.
Syntax
The <RoomData> element uses the following syntax:
<?xml version="1.0" encodin>g<="UTF-8&quo>t;?<
Transaction ..>.
Property<DataSet<>/span>
...<
R>oomData<
>RoomIDro<om_I>D/RoomID
<
Name
Text text="room_name&q>uot; language="<;lang>uage_cod<e"/
> ...<
/Name
Description
Text text=&quo>t;room_description&<quot; langua>ge="<;languag>e_code"/
.<..
>/Descri<ption
> Capacitymax_number_of_occupa<nts/Capaci>ty
< Occupancymax_n>u<mber_of_intended_occupants/Occupancy
OccupancyDetails !-- optional info about the ty><pes of guests,
> whe<ther adults, chil>dren, or <seniors --/O>ccupancyDetails
O<ccupancySetti>ngs
< Min>Occupancymin_number_<of_occu>pants/M<inOccupancy
> MinAge<min_age_>of_occupa<nts/Min>Age
/<OccupancySettings
PhotoURL
Caption
> Text text="ph<oto_desc>ription&q<uot>; language=&qu<ot;l>anguage<_code&quo>t;/
< ...
> /Caption
< URLphoto>_loca<tion/URL
> /Phot<oURL
RoomF>e<atures
> ...
/RoomFeatures
/RoomData
...
/PropertyDataSet
/TransactionAttributes
The <RoomData> element has no attributes.
Child elements
The <RoomData> element has the following child elements:
| Child Element | Required? | Type | Description |
|---|---|---|---|
| <Capacity> | Optional | integer | The maximum number of guests that a room can physically
accommodate. For a room, capacity is greater than or equal to
occupancy.
When specified, this value must be equal to or greater than the value
of the The value of |
| <Description> | Optional | Object | A detailed description of the room. This element should
contain information not described by other elements or the
<Name> element. You shouldn't use all capital
letters when specifying the description of the room.
The
Use a separate The following example shows French and English versions of the room description: <Description> <Text text="Two queen-sized beds" lang>uag<e="en"/ Text text="Deux lits de> <la reine&quo>t; language="fr"/ /Description |
| <Name> | Required | string | The name of the category of room. This value should match what
appears on the hotel's landing page (formerly point of sale). Don't set
the value of this element to all capital letters.
This element takes a single child element,
Use a separate The following example shows French and English versions of the room name: <Name> <Text text="Standard Double Room" lang>uag<e="en"/ Text text="Le chamb>r<e dou>ble" language="fr"/ /Name |
| <Occupancy> | Optional | integer | The maximum number of guests that a room is intended for.
For example, a large suite might be able to physically accommodate 6
guests (capacity = 6), but is intended for up to 4 guests only.
This value must be less than or equal to the
The value of
|
| <OccupancySettings> | Optional | Object | Settings which can restrict or modify the occupancy requirements of a
room.
The
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> Not all child elements need to be included. |
| <PhotoURL> | Optional | Object | A URL and optional caption for a photo of the given room or
Room Bundle. You can specify more than one <PhotoURL>
for a room or Room Bundle. Each photo URL must be in its own
<PhotoURL>.
This element takes the following child elements:
Example: <PhotoURL>
<URL>https://www.example.com/static/bar/image1234.jpg</URL>
<Caption>
<Text text="A bright and breezy way to enjoy your mornin'
cuppa tea." >langu<age="en"/
Text text="Une façon lumineuse et aérée pour profiter
de votre journée >tas<se de th>é<." l>a<nguage=&>quo<t;f>r"/
/Caption
/PhotoURL
PhotoURL
URL<http>s:/</www.fo>o.com</static/bar/image5678.jpg/URL
Caption
Text text=&qu>ot;Or<, perhaps you prefer coffee." language="en"/
> T<ext text>=<"Ou >peut-être préférez-vous le café." language="fr"/
/Caption
/PhotoURL |
| <RoomFeatures> | Optional | <RoomFeatures> |
Contains information about room features. |
| <RoomID> | Required | string | The unique ID for the room. Use this ID to match the room data
with the <Result> blocks in your pricing updates. For
more information, refer to Room Bundle metadata. (You
can also use this ID to reference a common room definition in a single
Transaction message when defining room data inline.) |
Examples
Room data
The following example defines room data:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-1>8T1<6:20:00-04:00&q>uot; <id=">;42&<quot;
P>roper<tyDataSe>t
P<ropert>y1234/<Propert>y
R<oomD>ata
< RoomID5440OF/RoomID
Name
Text te>xt="<Single King Bed Room" language="en>"/<
> Tex<t text=&quo>t;Simple <Lit de Roi" language="fr"/
/Name
Description
Text text="One king bed with pillowtop mattresses, 300-thread-count linens,
and down comforters (bedspreads). City view. 300 square feet. Desk with
rolling chair. Multi-line phone with voice mail>. Cable/s<atellite TV with
complimentary HBO and pay movies." language=&quo>t;en&qu<ot;/
> Text t<ext=&quo>t;Un très< grand >lit avec ma<telas à plateau-coussin, ..." langu>age="f<r"/
/Description
PhotoURL
> Cap<tion
> Te<xt >text="Bathroom View" language=&qu<ot;e>n"</
> Text< text=&q>u<ot;La sal>le de< baines&q>uot<; language=">;<fr"/
> /Caption
URLhttp://www.foo.com/static/bar/image1234.jpg/URL
/PhotoURL
Capacity4/Capacity
/RoomData
/PropertyDataSet
/Transaction
Room & package metadata
The following example defines room and package metadata:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-1>8T1<6:20:00-04:00&q>uot; <id=">;42&qu<ot;
Pro>perty<DataSet
> Pro<perty1>80054/<Propert>y
R<oomD>ata
< RoomID060773/RoomID
Name
Te>xt text=&<quot;Single Bed Room" language=">;en&quo<t;/
> <Text text=&>quot;Cham<bre single" language="fr&quo>t;/
< /Name
Description
Text tex>t="<;Non-smoking>" <language>="en<"/>
Te<xt text="Pas de fumiers" lan>guage="<;fr"/
/Description
P>hotoURL
< <>/span>Caption
< > Text text="Living area" lang<uage>="<en"/>
< Text tex<t="Le >chambre<" la>nguage<="fr&>quot;/
< > /Capt<ion
URLhttp://www.foo.com/static/bar/>image1234<.jpg/URL
/PhotoURL
/RoomData
Packag>eData
< >Package<IDP54321/Pa>ckageID
< Name
Text text="Breakfast Included" language="e>n"/
< Text text="Avec le petit déjeuner" language="fr"/
> /Nam<e
Desc>ription<
Text tex>t<="Includes a >delig<htful array >of <jams and jellies>.<" langu>age="en"/
Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/
/Description
BreakfastIncluded1/BreakfastIncluded
/PackageData
/PropertyDataSet
/Transaction
Multiple room bundles
The following example defines room and package metadata for multiple Room Bundles:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-1>8T1<6:20:00-04:00" id="42"
!-- A transa>cti<on message with> room< types r>esult<. --
Pr>opert<yDataSet>
Pr<operty>12345/<Propert>y
R<oomD>ata
< RoomIDsingle/RoomID
Name
> Text te<xt="Single room" language=">;en&quo<t;/
> <Text text=&>quot;Cham<bre simple" language="fr">/
/<Name
Description
Text text=&qu>ot;A si<ngle room&qu>ot; lan<guage=&q>uot;en&qu<ot;/
> Text <text="Le chambre simple" lan>guage="<;fr"/
/Description
P>hotoURL
< <>/span>Caption
< > Text text="Living area" lang<uage>="<en"/>
< Text text=&qu<ot;>Le chambre" language="fr"/
< > /Cap<tion
> URL<http://w>w<w.foo.com>/stat<ic/bar/im>age12<34.jpg/U>RL
< /PhotoURL
< P>hotoURL<
> URLh<ttp://www.foo.com/static/bar/image1235>.jpg/URL
< /PhotoURL
Capacity2/Capacity
> /Ro<omDat>a
R<oomData
> < RoomIDdoubl<e/RoomID
> < Name
> Text< text=&qu>ot;Double room&<quot; lang>uage=&q<uot;>en"/<
Text text="Chambre double" language=&q>uot;fr&qu<ot;/
/Name
Occupancy1/Occupancy
/RoomData
PackageD>ata
< >span>PackageID<refundbreak>fast/Pack<ageID
Name
Text text="Refunda>ble Room <with Breakfast" language="en"/
> Text t<ext="Ch>ambre r<emboursable av>ec le< petit déjeuner>" <language="fr"/
/Name
Descript>ion
< Text text=&q>u<ot;Continental Bre>akfas<t" lang>uage=<"en&qu>ot;/
< Text text=<"Peti>t déjeu<ner >continent<al" language="fr"/
>/Descript<ion
ChargeCurrencyhotel/ChargeCurrenc>y
< Refundable <available=&>quot;1&qu<ot; refundable_until_days="3"/
> Bre<akfastIncluded1/BreakfastIncluded
/Packa>geData
< PackageD>ata
< Package<IDprepaid/>Package<ID
Name
> < Text text=>"N<onrefundable" langua>ge=&q<uot;en">/
< Text text>=<"Non re>mboursable" language="fr"/
/Name
Description
Text text="Blah blah blad" language="en"/
Text text="Le blah blah blad" language="fr"/
/Description
Occupancy2/Occupancy
ChargeCurrencyweb/ChargeCurrency
Refundable available="0"/
/PackageData
/PropertyDataSet
/Transaction
<RoomFeatures>
Defines features found in the room.
The <RoomFeatures> element appears in the following place in the
Transaction message XML hierarchy:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<RoomFeatures>
Syntax
The <RoomFeatures> element uses the following syntax:
<?xml version="1.0" encodin>g<="UTF-8&quo>t;?< Transaction ... >PropertyDataS<et ... > ...< RoomDat>a R<oomFeatures Ja>paneseHotelRoomStyle[western|japane<se|japanese_western]/Ja>paneseHot<elRo>omStyle < Beds Bed size="[single|semi_d>ouble|double|q<ueen|king]" W>idth unit=&quo<t;cm" number="width&quo>t;/ < > Length unit<="cm" number="length">;/ < >/Bed < > !-- Incl<ude with> any addi<tional beds>. -- /Be<ds S>uite/ < Cap>sule/ < Roomsharing[sh>ared|priv<ate]/Ro>omsharing Out<door/ > Mob<ilityAccessible/ Smoking[smoking|non>_smoking]/S<moking BathAndToilet relation="[toget>her|separat<e]" Bath bathtub="[false|true]" shower="[fal>se|true]&<quot;/ > Toilet< electronic_>bidet=&qu<ot;[false|true]&>quot; mob<ility_ac>cessible=<">;[false|tru<e]"/ /BathAndToilet OpenAirBath/ > AirCond<itioning/ < Balco>ny/> <Views > < !-- (Option>al) Defines the< type of >views from <the room. -- > < !-- Exa>mple: OceanView/ -- /Views /RoomFeatures ... /RoomData ... /PropertyDataSet /Transactions
Attributes
The <RoomFeatures> element has no attributes.
Child elements
The <RoomFeatures> element has the following child elements:
| Child Element | Required? | Type | Description |
|---|---|---|---|
| <JapaneseHotelRoomStyle> | Optional | enum | Indicates the style of a Japanese hotel room. Valid values are:
|
| <Beds> | Optional | Object | Contains as many <Bed> as the room has. Note
that the Japanese futons shouldn't be counted here.
Each
<Bed> has the following child elements:
<Beds>
<Bed size="do>uble&<quot;
Width unit="cm>"<; number="140"/
>Len<gth >uni<t=&q>u<ot;cm" number=>&<quot;>195"/
/Bed
Bed/ !-- Size unknown --
/Beds |
| <Suite> | Optional | empty | Provide this element when this room is a suite. |
| <Capsule> | Optional | empty | Provide this element when this room is a capsule room. |
| <Roomsharing> | Optional | enum | Whether this room is shared with other occupants such as owners or other
guests. Valid values are shared and private. |
| <Outdoor> | Optional | empty | Provide this element when this room is outdoor lodging that doesn't have fixed walls, plumbing, and climate control. For example, hotel rooms are not outdoor lodging whereas campsites where guests stay in tents and RV parks where guests bring their own RV are outdoor lodging. |
| <MobilityAccessible> | Optional | empty | Provide this element when this room is mobility-accessible. |
| <Smoking> | Optional | enum | Whether this room is a non-smoking room or a smoking room. Valid values
are non_smoking and smoking. |
| <BathAndToilet> | Optional | Object | Contains information about a bath and toilet in the room.
The attribute is:
The element optionally takes the following child elements:
Example: <BathAndToilet relation="sepa>rat<e"
Bath bathtub=">;1&<quot; shower="1"/
Toilet
electronic_bidet=&q>u<ot;1"
> mobility_accessible="1"/
/BathAndToilet |
| <OpenAirBath> | Optional | empty | Provide this element when this room has a private open-air bath. |
| <AirConditioning> | Optional | empty | Provide this element when this room has air conditioning. |
| <Balcony> | Optional | empty | Provide this element when this room has a balcony or lanai. |
| <Views> | Optional | Object | Valid options include:
|
Examples
JapaneseHotelRoomStyle doesn't have a default value. Omitting
a value does not result in an XML error, but your listing is not shown in
the search results, when the user filters by room style or beds.
Two single beds
The following example shows how to use <RoomFeatures>:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-1>8T1<6:20:00-04:00&q>uot; <id=">;42&<quot;
P>roper<tyDataSe>t
P<ropert>y1234/Pr<operty
> Roo<mData
>RoomIDRoo<mID_1/RoomID
Roo>mFeatur<es
JapaneseHote>lRoomStyl<ewes>t<ern/JapaneseHotelRoomS>tyle
< Beds !-- Two si>ngle beds --
< Bed size="sin>gle"
< Width unit="cm&q>uot; number<=&qu>ot;97"</
Len>gth unit=&quo<t;cm" number="195&>quot;/
< /Bed
Bed size=&q>uot;single&<quot>;
< >Width uni<t=&quo>t;cm"<; number>="97<"/
> < Length uni>t="c<m" >number=&q<uot;195"/
> /Be<d
> /Beds
< >span>Suite/
< Capsule/
Roomsharingp>rivate/Room<sharing
Outdoor/
> Mobili<tyAccessible/
Smokingnon_smoking/Smoking
> Bath<AndToilet rela>tion=&quo<t;separate&q>uot;
< Bath batht>ub="<1" >shower=&q<uot;1>"/
< >span>Toilet electr<onic_bidet=>"1&quo<t; mobilit>y_accessibl<e="1&q>uot;/
< /Ba>thAndToilet
< Op>enAirBath/
< AirConditi<oning/
> Bal<cony/
> < Views
> < LakeView/
> MarinaView/
BeachView/
ForestView/
MountainView/
NatureView/
/Views
/RoomFeatures
/RoomData
/PropertyDataSet
/Transaction
Two double beds
The following is an example of western style Japanese room with two
double beds.
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2023-07-2>3T1<6:20:00-04:00&q>uot; <id=">;42&<quot;
P>roper<tyDataSe>t
P<ropert>y1234/Pr<operty
> Roo<mData
>RoomIDRoo<mID_1/RoomID
Roo>mFeatur<es
JapaneseHote>lRoomStyl<ewes>t<ern/JapaneseHotelRoom>Style
< Beds !-- Two d><oubl>e beds--
< Bed size=><&quo>t;double&<quot;>/Bed
< Bed s>ize=&<quot;doub>le&<quot;/Bed
> < /Beds
> /RoomFeatures
/RoomData
/PropertyDataSet
/Transaction
Japanese style without bed
The following is an example of a Japanese style room without bed. Bed
information is not required for japanese style room.
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2023-07-2>3T1<6:20:00-04:00&q>uot; <id=">;42&<quot;
P>roper<tyDataSe>t
P<ropert>y1234/Pr<operty
> Roo<mData
>RoomIDRoo<mID_1/RoomID
Roo>mFeature<s
JapaneseHotel>RoomSty<lejapanese/Ja>panes<eHotelRoo>mSt<yle
/RoomF>e<atures
/>RoomData
/PropertyDataSet
/Transaction
Japanese western with bed
The following is an example of a japanese_western style room with king
size bed.
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2023-07-2>3T1<6:20:00-04:00&q>uot; <id=">;42&<quot;
P>roper<tyDataSe>t
P<ropert>y1234/Pr<operty
> Roo<mData
>RoomIDRoo<mID_1/RoomID
Roo>mFeatures
< JapaneseHotelR>oomStylejapanese<_wes>tern/Japane<seHotelRoomStyl><e
> Bed<s
> <Bed size=&quo>t;kin<g"/B>ed
< /Beds
> < /R>oomFeatures
/RoomData
/PropertyDataSet
/Transaction
If partner doesn't have the number of beds information in japanese_western
rooms, then follow the example:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2023-07-2>3T1<6:20:00-04:00&q>uot; <id=">;42&<quot;
P>roper<tyDataSe>t
P<ropert>y1234/Pr<operty
> Roo<mData
>RoomIDRoo<mID_1/RoomID
Roo>mFeatures
< JapaneseHotelR>oomStylejapane<se_western/Ja>panes<eHotelRoo>mSt<yle
/RoomF>e<atures
/>RoomData
/PropertyDataSet
/Transaction
<PackageData>
Defines itinerary-independent metadata about Room Bundles for a property. This element contains information that is associated with a partner and hotel, but not with an itinerary. The intended purpose is to define all non-itinerary data once and reference it from itinerary data.
The <PackageData> element appears in the following place in the
Transaction message XML hierarchy:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
The <PackageData> element is similar to <RoomData>, but it
describes rate features and terms that aren't part of the physical room
description. You use <RoomData> and <PackageData> in combination to
provide details about Room Bundles and rate features. For individual rooms that
aren't part of a package, use just <RoomData>.
You can define both the <RoomData> and <PackageData> elements for the
same room or Room Bundle. When Google displays that room or package in the
search results, it will include the descriptions from both, separated by a
hyphen.
If you update a single <PackageData> element for a property, you must
update all <PackageData> and <RoomData> elements for the property.
Each <PropertyDataSet> is considered all data about the property, and
overwrites any existing data.
For more information, refer to Room Bundle metadata.
Syntax
The <PackageData> element uses the following syntax:
<?xml version="1.0" encodin>g<="UTF-8&quo>t;?<
Transaction ...
>Prope<rtyDataSet >...
< Package>Data
< PackageID>package<_ID/>PackageID<
Name
Text text="package_name&q>uot; language="<;lang>uage_co<de"/
> ..<.
/Name
Description
Text text="p>ackage_description&<quot; langua>ge=&quo<t;language_code"/
...
/Description
Refundable available="[false|true]" refund>able_un<til_days=">;number_of_days"
re<fundable_until_>time=&q<uot;time&>quot;/
ChargeCurrency[depo<sit|hotel|>install<ments|web]/Charg><eCurrency
Occupancymax_number_of_intended_occupants/Occupancy
Occupa><ncyDetails!-- opt>ional i<nfo about the types of guests,
whether adults or children --/Occup>ancyDet<ails
!-- Fo>r these next <3 elements, boolea>n_value< can be 0/1 or t>rue/false --
< BreakfastIn>cludedb<oolean_value/Br>eakfastInclud<ed
Interne>tInclud<edboolea>n_value/I<nternet>Included
< ParkingIncludedboolean_value/ParkingIncluded
>PhotoURL
Captio<n
> Text <tex>t="photo_<desc>ription<" la>nguage="lang<uage_>code"<;/
...
/Caption
URLphoto_location/URL
/PhotoURL
...
Meals
Breakfast
i>ncluded=&<quot;[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|>false]&<quot;/>
< Dinner
> incl<uded="[>true|fa<lse]" b>uffet="[<true|false]&q>uot;
< in_room="[tru>e|false]&<quot; in_pr>ivate_space<="[true|false]"/
/Meals
> Chec<kinTimecheck>in_time/C<heckinTime
> Checko<utTimecheckout_time/CheckoutTime
> Memb<ershipBenefit>sInclud<ed
ProgramName
> T<ext language=&qu>ot;en&quo<t; text="Special> Rewar<ds">;
< /ProgramName
> < ProgramLev>el
< Text language="en" text="Plat>inum&<quot;
> /Pro<gramLevel>
/Members<hipBenefit>sInclud<ed
> OnP<ropertyCredit
Amount currency="USD&q>uot;123<.45/A>mount
< /OnPropertyCredi<t
/PackageD>ata
< !-- a Packag>eID with <a MilesInclud>ed rate< feature --
> Package<Data
> PackageI<Droom_with_miles/PackageID
Name
> Tex<t text=&q>uot;Room <with Bundled Miles" language=&q>uot;en&qu<ot;
/Name
> Charge<Currency>hotel >/Charge<Currency
> Mile<sIncluded
> NumberOfMiles<integer/NumberOf>Miles
< Provi>der
Text language="en" text="provider-name"
/Provider
!-- Add Loyalty point information --
LoyaltyCampaignIDcampaign_ID/LoyaltyCampaignID
/MilesIncluded
/PackageData
...
...
/PropertyDataSet
...
/TransactionAttributes
The <PackageData> element has no attributes.
Child elements
The <PackageData> element has the following child elements:
| Child Element | Required? | Type | Description |
|---|---|---|---|
| <BreakfastIncluded> | Optional | boolean | Specifies whether this package includes breakfast with the rate.
Valid values are 0 (or false) and 1
(or true).
It is preferred that you use
|
| <ChargeCurrency> | Optional | enum | When and where the user pays for a booking. This element uses the same
syntax as <ChargeCurrency> in a <Result>.
The default value is |
| <CheckinTime> | Optional | Time | Earliest possible check-in time. Time must be less than 24:00 in the local time of the hotel. |
| <CheckoutTime> | Optional | Time | Latest possible check-out time in the local time of the hotel. |
| <Description> | Optional | Object | A detailed description of the package. This element should
contain information not described by other elements or the
<Name> element. You shouldn't use all capital
letters when specifying the description of the room.
The <Description>
<Text text="Two breakfast buffet certificates for
each night of stay." lang>uag<e="en"/
Text text="Deux certificats petit-déjeuner buffet
pour chaque nuit d>e< séjour.&quo>t; language="fr"/
/Description |
| <InternetIncluded> | Optional | boolean | If a package includes internet access at no charge,
while other packages wouldn't include that amenity. Don't set this
element for Room Bundles in a hotel that provides free internet to all
rooms. This element does not apply to in-room wired internet or wireless
internet that is not available in guest rooms. Valid values are
0 (or false) and 1
(or true).
|
| <Meals> | Optional | Object | Contains information about meals in this package.
The
The optional attributes are used only when For meal filters ( |
| <Name> | Required | string | The name of the package. This value should match what appears on the
hotel's landing page. Don't set the value of this element to all capital
letters.
This element takes a single child element, <Name> <Text text="Bed and Breakfast" lang>uag<e="en"/ Text text="Lit et peti>t< déje>uné" language="fr"/ /Name |
| <Occupancy> | Optional | integer | The maximum number of guests that a Room Bundle is intended for.
For example, a large suite might be able to physically accommodate 6
guests, but is intended for up to 4 guests only.
This value must be less than or equal to the
The value of If you specify this element in both Note: <Occupancy> may be accompanied by
<OccupancyDetails>,which specifies the type of guests
(adults or children). Refer to <OccupancyDetails> for syntax and
description of child elements.
|
| <PackageID> | Required | string | The unique ID for the package. Use this ID to match the
Room Bundle data with the (You can also use this ID to reference a common Room Bundle definition used in a single Transaction message when defining Room Bundle data inline.) |
| <ParkingIncluded> | Optional | boolean | Whether a Room Bundle includes parking at no charge, where
parking would otherwise be a paid service at this hotel. Don't specify
a value for this element for a hotel that offers free parking.
Valid values are |
| <PhotoURL> | Optional | Object | (Same as <PhotoURL> in <RoomData>,
but for the package (e.g. meal photos).)
|
| <Refundable> | Optional | Object | Enables listing a rate as being fully refundable or providing a free
cancellation. If not provided, no information about a refund is displayed.
A refund policy at the <PackageData> level overrides the refund policy at
the <Result> level. A refund policy at the <Rates> level overrides
the refund policy at the <PackageData> level. Refundable pricing can
also be highlighted to users through alternative options without directly
modifying your transaction message schema. Learn more about these options
Refundable rates policy.
The following example shows the <Refundable available="1" refundable_until_days="7" refundable_un>til_time="18:00:00"/ Note: We recommend setting all of the attributes. A feed status warning message is generated when one or more attributes are not set. If you don't set any attributes, the rate does not display as refundable. The attributes are:
When setting the attributes, note the following:
|
| <MembershipBenefits |
Optional | boolean | Rate includes elite status benefits for duration of stay. Includes
the following parameters:
|
| <CarRentalIncluded> | Optional | boolean | Rate includes free car rental for duration of stay. |
| <MilesIncluded> | Optional | boolean | Rate includes frequent flyer miles. Parameters include:
Note: |
| <OnPropertyCredit> | Optional | boolean | Rate includes on-property credit (F&B, resort, spa, etc). Parameter:
|
| <AirportTransportationIncluded> | Optional | Object | Rate includes free transportation to/from a nearby airport. The optional
direction attribute specifies the directionality of the
transportation. Valid values include:
from: Transportation is provided from the airport to the
property. This is the default value if no direction is specified.
to: Transportation is provided to the airport from the
property.
round_trip: Transportation is provided both to and from the
airport.
|
Examples
Single room bundle
The following example defines a single Room Bundle, with an occupancy of 2 (one adult and one child) and includes breakfast:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-1>8T1<6:20:00-04:00&q>uot; <id=">;42&<quot;
P>roper<tyDataSet
> Prop<erty1234/>P<roperty
> Packa<geData
Occ>upancy2/O<ccupancy
> < OccupancyDetai<ls
> NumAdult<s1/NumAdults
> Chi<ldren
> <Child age="1>7"</
> /Chil<dren
> /Occup<ancy>Details
< PackageIDP54321/PackageID
Name
> Text <text="Breakfast Included" language=&quo>t;en&qu<ot;/
> < Text text>="Av<ec le petit déjeuner" language="fr"/
/Name
Description
Text te>xt="<Two certificates for continental
breakfast will be provided." language="en"/
> T<ext text=&qu>ot;Deux< certificats pour> <le petit déjeuner
> < >continenta<l seront fournis>.<" langu>age="fr"/
/Description
BreakfastIncluded1/BreakfastIncluded
/PackageData
/PropertyDataSet
/Transaction
Room and package metadata
The following example defines room and package metadata:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-1>8T1<6:20:00-04:00&q>uot; <id=">;42&qu<ot;
Pro>perty<DataSet
> Pro<perty1>80054/<Propert>y
R<oomD>ata
< RoomID060773/RoomID
Name
Te>xt text=&<quot;Single Bed Room" language=">;en&quo<t;/
> <Text text=&>quot;Cham<bre single" language="fr&quo>t;/
< /Name
Description
Text tex>t="<;Non-smoking>" <language>="en<"/>
Te<xt text="Pas de fumiers" lan>guage="<;fr"/
/Description
P>hotoURL
< <>/span>Caption
< > Text text="Living area" lang<uage>="<en"/>
< Text tex<t="Le >chambre<" la>nguage<="fr&>quot;/
< > /Capt<ion
URLhttp://www.foo.com/static/bar/>image1234<.jpg/URL
/PhotoURL
/RoomData
Packag>eData
< >Package<IDP54321/Pa>ckageID
< Name
Text text="Breakfast Included" language="e>n"/
< Text text="Avec le petit déjeuner" language="fr"/
> /Nam<e
Desc>ription<
Text tex>t<="Includes a >delig<htful array >of <jams and jellies>.<" langu>age="en"/
Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/
/Description
BreakfastIncluded1/BreakfastIncluded
/PackageData
/PropertyDataSet
/Transaction
Multiple room bundles
The following example defines room and package metadata for multiple Room Bundles:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-1>8T1<6:20:00-04:00" id="42"
!-- A transa>cti<on message with> room< types r>esult<. --
Pr>opert<yDataSet>
Pr<operty>12345/<Propert>y
R<oomD>ata
< RoomIDsingle/RoomID
Name
> Text te<xt="Single room" language=">;en&quo<t;/
> <Text text=&>quot;Cham<bre simple" language="fr">/
/<Name
Description
Text text=&qu>ot;A si<ngle room&qu>ot; lan<guage=&q>uot;en&qu<ot;/
> Text <text="Le chambre simple" lan>guage="<;fr"/
/Description
P>hotoURL
< <>/span>Caption
< > Text text="Living area" lang<uage>="<en"/>
< Text text=&qu<ot;>Le chambre" language="fr"/
< > /Cap<tion
> URL<http://w>w<w.foo.com>/stat<ic/bar/im>age12<34.jpg/U>RL
< /PhotoURL
< P>hotoURL<
> URLh<ttp://www.foo.com/static/bar/image1235>.jpg/URL
< /PhotoURL
Capacity2/Capacity
> /Ro<omDat>a
R<oomData
> < RoomIDdoubl<e/RoomID
> < Name
> Text< text=&qu>ot;Double room&<quot; lang>uage=&q<uot;>en"/<
Text text="Chambre double" language=&q>uot;fr&qu<ot;/
/Name
Occupancy1/Occupancy
/RoomData
PackageD>ata
< >span>PackageID<refundbreak>fast/Pack<ageID
Name
Text text="Refunda>ble Room <with Breakfast" language="en"/
> Text t<ext="Ch>ambre r<emboursable av>ec le< petit déjeuner>" <language="fr"/
/Name
Descript>ion
< Text text=&q>u<ot;Continental Bre>akfas<t" lang>uage=<"en&qu>ot;/
< Text text=<"Peti>t déjeu<ner >continent<al" language="fr"/
>/Descript<ion
ChargeCurrencyhotel/ChargeCurrenc>y
< Refundable <available=&>quot;1&qu<ot; refundable_until_days="3"/
> Bre<akfastIncluded1/BreakfastIncluded
/Packa>geData
< PackageD>ata
< Package<IDprepaid/>Package<ID
Name
> < Text text=>"N<onrefundable" langua>ge=&q<uot;en">/
< Text text>=<"Non re>mboursable" language="fr"/
/Name
Description
Text text="Blah blah blad" language="en"/
Text text="Le blah blah blad" language="fr"/
/Description
Occupancy2/Occupancy
ChargeCurrencyweb/ChargeCurrency
Refundable available="0"/
/PackageData
/PropertyDataSet
/Transaction
Room bundle with rates
The following example defines room and package metadata for a Room bundle with rate features:
<Transaction timestamp="2010-04-24T20:44:56-04:00" >id=<"TXNID&quo>t;
<Property>DataS<et
Pr>opert<y12345/P>roperty
Ro<omData
> < ...
/RoomData
!-- definitions of PackageData types includ>ing r<ate feature>s --
< >PackageData
PackageIDroo<m_with_add>l_benef<its/>PackageID<
Name
Text text="Acme Hotels 2017 Promotio>n Packa<ge&qu>ot; lan<guage="en>"<;/
/Name
> C<hargeCurrencyhote>l</ChargeCurrency
> Bre<akfastIncluded1/BreakfastI>ncluded
< MembershipBenefit<sIncluded
ProgramName
Tex>t languag<e="en&q>uot; text<="Marri>ott Rewards<"/
/ProgramName
> Program<Level
> Text< language="en" te>xt=&quo<t;Platinum">/
< /ProgramLevel
>/Membe<rshipBe>nefitsI<ncluded
OnP>roper<tyCredit
> <Amount curr>ency=&q<uot;USD&q>uot;123.45/Amou<nt
/>OnPrope<rtyC>redit
< /PackageData
PackageData
PackageIDroom_>with_mi<les/P>ackageI<D
Name
> < Text text=&qu>ot;Room< with Bundled> Miles&qu<ot; language=>&quo<t;en"/
> /Name<
ChargeCurr>encyhotel/C<hargeCurrency
> Miles<Included
> Numb<erOfMiles1000/NumberOfMiles
LoyaltyCamp>aignI<Dmy_campaign>/Lo<yaltyCampaignID
> < /MilesIncluded
Airport>Tra<nsport>ation<Include>d< direction=&>quot;from"/
/PackageData
/PropertyDataSet
!-- The actual list of prices --
Result
…
/Result
/Transaction
Meals & photos
The following example defines room and package metadata for meals, photos, and check-in and check-out times:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-1>8T1<6:20:00-04:00&q>uot; <id=">;42&<quot;
P>roper<tyDataSet
> Prop<erty1234/>Property
< P>ackageData
< <>/span>PackageIDP<ackageID_1/PackageID
Name
T>ext tex<t=&qu>ot;Meal<s Includ>ed" <languag>e="en&<quot;/
/Name
PhotoURL
> Capti<on
Text text=">Breakfast<" l>anguage=&<quo>t;en"/
Text text="朝食&qu<ot; >languag<e="j>a"</
> /Cap<tion
URLhttp://example.com/static/bar/image1234.jpg/URL
/PhotoURL
Meals
!-- Guests can choos>e to have< breakfast in their room or in another
space to >avoid con<tact with other guests. --
> Bre<akfast> includ<ed="1&>quot;< in_room=&qu>ot;1&qu<ot; in_priva>te_sp<ace="1&q>uot;/<
Din>ner< included=">1<" buffe>t="1"/
/Meals
CheckinTime15:00/CheckinTime
CheckoutTime11:00/CheckoutTime
/PackageData
/PropertyDataSet
/Transaction
Breakfast
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-1>8T1<6:20:00-04:00&q>uot; <id=">;42&<quot;
P>roper<tyDataSet
> Prop<erty1234/>Property
< P>ackageData
< <>/span>PackageIDP<ackageID_1/PackageID
Name
Text >text=&q<uot;B>reakfas<t Includ>ed" <languag>e="en&<quot;/
/Name
PhotoURL
> Capti<on
Text text=">Breakfast<" l>anguage=&<quo>t;en"/
Text text="朝食&qu<ot; >languag<e="j>a"</
> /Cap<tion
URLhttp://exa>mple.com/<static/bar/image1234.jpg/URL
/PhotoURL
Meals
> Bre<akfast included="tr>ue"<;/
> !-<- Dinner no>t inc<luded needs >to be e<xplicitly sp>ecifi<ed --
> Dinn<er included=>&qu<ot;false"/
> < >/Meals
CheckinTime15:00/CheckinTime
CheckoutTime11:00/CheckoutTime
/PackageData
/PropertyDataSet
/Transaction
<Result>
A container for pricing and availability updates in a <Transaction>
message.
The <Result> element appears in the following place in the
Transaction message XML hierarchy:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Use <Result> to set or update room prices and define
available inventory. Items defined in this element typically reference
itinerary-independent metadata about a room or package (such as a description or
set of amenities) defined in <PackageData> and <RoomData>.
You typically send Transaction messages with pricing updates very frequently. Exactly how and how often you do this depends on your delivery mode.
You can use <Result> in a Transaction message to remove itineraries, as
described in Removing Inventory.
For more information about using Transaction messages to update prices and
availability, Adding and Updating Inventory.
A single Transaction message can include any number of <Result> elements
in it, as long as the size of the message does not exceed 100MB.
Syntax
The <Result> element uses the following syntax:
<?xml version="1.0" encodin>g<="UTF-8&quo>t;?< Trans>actio<n ... Result> <!-- Requ>ired -- < Prope>rtyho<tel_ID/Property> <!-- Req>uired -- < Check>inYYY<Y-MM-DD/Checkin> <!-- Re>quired -- Ni<ghtsnum>ber_of<_nights/Nights Baserate curr>ency=<"cur>rency<_code"price/Basera<te !>-- Only required when Bas>erate< contains a real price -- > Tax curr<ency>=&quo<t;currency_code"ta<x_amount>/Tax !-- Only required> when< Baserate contains a real price ->- Othe<rFees curr>ency=<"currency_code"fee_amount/OtherFees Refundable available="[false|true]" refundable_unt>il_day<s=&quo>t;numbe<r_of_da>ys&qu<ot; > refundabl<e_until_ti>me=&q<uot;time">/ RoomIDro<om_ID/RoomID > Pac<kageIDpackage_>ID/PackageID ExpirationTimee<xpiration_time/>Expira<tionTime<>/span> ChargeCurrency[deposit|hotel<|installme>nts|w<eb]/ChargeCurrency Occupancymax_number_of_intended_occupants/Occupancy !-- For Baserate, occupancy value must be greater than or equ>al to< 2. If a value is not provided for occupancy, it defaults to 2. -- !-- Child occupancy rates should only be sent throu>gh Li<ve pricing > with conte<xt and not throug>h Pull< or C>han<ged pr>icing <-- Occ>upa<ncyDetailso>ccupan<cy_info/OccupancyDeta>ils < Rates.../Rates RoomBundle.../RoomB>undle Allo<wablePointsOfSale > Poin<tOfSale id=&q>uot;lan<ding_page_ide>ntifier<"/ >... < /Allowa>blePoints<OfSale MilesIncluded NumberO>fMilesi<nteger/Nu>mberOfM<iles Provider Text lan>guage=&<quot;en" tex>t="pro<vider-name" > </Provider > !<-- Add >Loyalty p<oint informa>tion -- LoyaltyCampaignIDcampaign_ID/LoyaltyCampaignID /MilesIncluded /Result ... /Transaction
Attributes
The <Result> element has the following attributes:
| Attribute | Required? | Type | Description |
|---|---|---|---|
| mergeable | Optional | boolean | By default, new prices for a specific hotel and itinerary pair will
overwrite any previous (non-expired) prices present in Google's cache. The
mergeable attribute lets you store additional prices to Google's cache
without deleting previous pricing information. Live Pricing Query with
Context responses will always have this attribute set to true
(regardless of your transaction message response). |
Child elements
The <Result> element has the following child elements:
| Child Element | Required? | Type | Description |
|---|---|---|---|
| <AllowablePointsOfSale> | Optional | Object | One or more landing pages that are eligible for the
hotel. A landing page is a website that can handle the booking process for the
end-user. To explicitly include certain landing page (and exclude
others), add one or more <AllowablePointsOfSale>
elements that match the <PointOfSale> element's
id attribute in the landing pages file.
If you don't include this element, all landing pages defined in the landing pages file are considered eligible to be used for booking the room. For more information, refer to Landing Pages File Syntax. |
| <Baserate> | Optional | float | The price of the room for the stay. The value of this element should reflect the following:
When the room is unavailable for the itinerary,
To remove a Room Bundle, use the instructions in Removing a Room Bundle. The <Baserate currency=">;USD&qu<ot;1200.4>0/Baserate The
|
| <ChargeCurrency> | Optional | enum | When and where the user pays for a booking. This element can
be used in a Transaction message in the <Result>
element for the Hotel Price or <PackageData> block
for a Room Bundle.
Valid values are:
The default value is |
| <Checkin> | Required | Date | The check-in date for an itinerary using the Date
format. The combination of the <Nights> element and the
<Checkin> element make up an itinerary. |
| Optional | string | Deprecated: Defines a custom field that you can use to
pass additional data associated with a hotel. You can pass up to five
custom values with the following element names:
The Important: Contact your Technical Account Manager (TAM) if you want
to use |
|
| <ExpirationTime> | Optional | DateTime | The date and time at which the price is considered expired (3 hours
minimum).
We recommend that you don't provide expiration timestamps if it isn't critical to your pricing structure. Google doesn't serve any prices that are expired, and any itinerary that has an expired price will become eligible for Live Pricing Querying. |
| <MilesIncluded> | Optional | boolean | Rate includes frequent flyer miles. Parameters include:
Note: |
| <Nights> | Required | integer | The number of nights for an itinerary. The value of the
<Nights> element must be a positive integer.
The combination of <Nights> and
<Checkin> make up an itinerary. |
| <OtherFees> | Optional | float | Fees other than the base rate and taxes that influence the
final price of a room. The <OtherFees> element takes
a single required attribute, currency, that defines the
three-letter currency code for the fees. For example, USD.
The |
| <Occupancy> | Optional | integer | Specifies the maximum allowed occupants for this rate.
When <Occupancy> appears directly under <Result>,
it must specify 2 or more. <Occupancy> may
be accompanied by <OccupancyDetails>, which specifies
the type of guests (adults or children). If guest types are not specified,
they are assumed to be adults. Consult <OccupancyDetails> for
syntax and description of child elements. If the
<Occupancy> element is not provided, occupancy is
defaulted as 2.
Key Point: Child occupancy rates should only be sent through Live pricing with context and not through Pull or Changed pricing. Note: Contact your support team to enable the feature to send non-double occupancy prices. |
| <PackageID> | Optional | string | The unique ID of the package to map it to predefined package data.
Also used to populate the PACKAGE-ID landing page variable.
For more information, refer to
Room
Bundle metadata.
It is mandatory to include |
| <Property> | Required | string | The ID of a hotel affected by the associated data (price,
itinerary, Room Bundle, or metadata). The value of this element must be
a string. The value of this element must match the listing
<id> that you defined in your Hotel List Feed.
|
| <Rates> | Optional | <Rates> |
A container for one or more <Rate> blocks. Each <Rate> in
<Rates> defines a different price for the room/itinerary
combination.
Use the Note: Within |
| <Refundable> | Optional | Object | Enables listing a rate as being fully refundable or providing a free
cancellation. If not provided, no information about a refund is displayed.
A refund policy at the <PackageData> level overrides the refund policy at
the <Result> level. A refund policy at the <Rates> level overrides
the refund policy at the <PackageData> level. Refundable pricing can
also be highlighted to users through alternative options without directly
modifying your transaction message schema. Learn more about
Refundable rates policy.
The following example shows the <Refundable available="1" refundable_until_days="7" refundable_un>til_time="18:00:00"/ Note: We recommend setting all of the attributes. A feed status warning message is generated when one or more attributes are not set. If you don't set any attributes, the rate does not display as refundable. The attributes are:
When setting the attributes, note the following:
|
| <RoomBundle> | Optional | <RoomBundle> |
A container for information on priced physical descriptions of a room,
any packaging of amenities, and some purchase policy details for the
given hotel and itinerary.
In general, use this element to define pricing for the base room and different types of rooms within the same property. While it is possible to define Room Bundle descriptions inline, you should use a separate Transaction message to define that information. Google will store metadata so that you can reference it, rather than repeat it, in all future pricing updates. |
| <RoomID> | Optional | string | The unique ID of the room to map it to predefined room data. Also
used to populate the PARTNER-ROOM-ID landing page variable.
For more information, refer to
Room
Bundle metadata.
It is mandatory to include |
| <Tax> | Optional | float | The taxes that are calculated for the final price of a room.
The <Tax> element takes a single required attribute,
currency, that defines the three-letter currency code
for the taxes. For example, USD. The
<Tax> element is required if
<Baserate> is greater than zero.
If |
| <Unavailable> | Optional | Object | Indicates that the itinerary is unavailable for booking. Serves as a
container for more detailed reasons why the itinerary was unavailable. One
or more of the following unavailability reasons may be nested underneath the
<Unavailable> tag:
|
Examples
Multi-property example
The following example defines one itinerary and its pricing for two properties:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-2>3T1<6:20:0>0-04:<00"> id=&q<uot;42&qu>ot;
< Result
Prope<rty0607>73/Pr<operty
> RoomIDRo<omType101/>RoomI<D
P>ackageIDPa<ckage101>/Pack<ageID
> < Checkin20<18-06-10/Checkin
Ni>ghts2/<Nights
> Bas<erate currency=&qu>ot;US<D&qu>ot;27<8.33/Baserate
Tax cu>rren<cy="U>SD&qu<ot;25.12/Tax
Othe>rFees c<urrency="USD">2.00/<OtherFees
Allowabl>ePo<intsOfS>ale<
> Poin<tOfSale >id=&qu<ot;site1&>quot;</
>/AllowableP<ointsOf>Sale
< /Result>
Result
< Proper>ty052<213/Pro>perty
<RoomIDRo>omTyp<e101/R>o<omID
> Pac<kageIDPackage101/Packag>eID
< >Checkin2018-<06-10/Checkin
>Night<s2/N>ights<
Baserate currency=&>quot<;USD">299.9<8/Baserate
Tax cu>rrency=<"USD"26.42/T>ax
<OtherFees currency=&quo>t;USD<"2.00/OtherFees
> Al<lowablePoints>OfSale
< PointOf>Sale< id="otto>"/<
P>ointOfSal<e id="simon"/
/AllowablePoin>tsOfSal<e
Mil>esInclu<ded
NumberO>fMiles1200/<NumberOfMiles
> Pro<vider
>Tex<t langu>a<ge="en&>quot; text="United Airlines"/
/Provider
LoyaltyCampaignIDmy_campaign/LoyaltyCampaignID
/MilesIncluded
/Result
/Transaction
Not shown in this example are details about the room, such as a description, a picture and caption, the room's name, and its capacity.
You can define that information once in a separate Transaction message that Google stores. You can then reference it in all subsequent pricing and inventory updates. For more information, refer to Room Bundle metadata.
Multi-rate example
The following example defines a single itinerary and property with multiple
rates for various occupancies. The <Rates> element can be utilized to
provide multi-rate pricing for a specific property. The following example is
also useful for Vacation Rental (VR) properties:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2020-07-2>3T1<6:20:0>0-04:<00"> id=<"42&>quot;<
Resu>lt
Pro<perty123>4/Pro<perty
> < Checkin20<21-01-13/Checkin
Ni>ghts9/<Nights
> Bas<erate currency=&qu>ot;USD<&quo>t;319<6.1/Baserate
Tax cur>rency=<"USD&>quot;<559.49/Ta>x<
Other>Fees <curre>ncy=&qu<ot;U>SD"5<43.34/OtherFees
Occ>upancy<2/Occupan>cy
Ra<tes
Rate
> B<aser>ate curre<ncy="USD"3196.>1/Base<rate
> Tax cu<rrency=&q>u<ot;USD&quo>t;559.4<9/Tax>
< >span>OtherFees c<urrency="USD">543.34</OtherFee>s
< Occupancy1>/Occupancy
< >/Rate
< Rate
Baserate> curre<ncy=">USD"<3196.1/Ba>s<erate
> Tax< curr>ency=&q<uot;>USD"<559.49/Tax
Othe>rFees <currency=>"USD<"543.34/Other>Fees
< > Occupa<ncy3/Occupancy
/Ra>te
< Rate
> Bas<erate cur>r<ency=">;USD&qu<ot;31>96.1/Ba<sera>te
< Tax currency="US>D"<;559.49/T>ax
< OtherFees curren>cy=&qu<ot;U>SD"5<43.34/OtherFees
>Occupa<ncy4/Occup>ancy
< /Rate
> < Rate
> <Baser>ate cur<renc>y="U<SD"3196.1/Baserate>
< Tax cu>rrency=&q<uot;USD"559.4>9/Tax
< > Other<Fees currency="USD&>quot;5<43.34/Othe>rFees
< Occup<ancy5/Occu>pancy
< >/Rate<
> Ra<te
> < Baserate >currency="USD"3196.1/Baserate
Tax currency="USD"559.49/Tax
OtherFees currency="USD"543.34/OtherFees
Occupancy6/Occupancy
/Rate
/Rates
/Result
/Transaction
Unavailable example
The following example defines one itinerary whose availability couldn't be retrieved from downstream channels, a second that is both below the minimum night stay and already booked for the specified dates, and a third whose property is closed on the arrival date, but that opens during the course of the stay:
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-2>3T1<6:20:0>0-04:<00"> id=&q<uot;42&qu>ot;
< Result
Prope<rty06077>3/Pro<perty
> < Checkin20<18-06-10/Ch>eckin
< N>ights2/Night<s
Unavai>lab<le
> N<otFetc>hed/
< /Una>vailab<le
/Res>ult
< Result
Prope<rty07331>3/Pro<perty
> < Checkin20<18-06-10/Ch>eckin
< >Nights2/Nights<
Unavailable
> NoV<acancy/
> M<inNight>Sta<y valu>e=3/
< /Una>vailab<le
/Res>ult
< Result
Prope<rty05221>3/Pro<perty
> < Checkin201<8-06-10/Che>ckin
< Nights10/Nights
Unavailable
PropertyClosed first_open>=&quo<t;2018-06-15>&qu<ot; fir>s<t_closed=&qu>ot;2018-06-10"/
/Unavailable
/Result
/Transaction
<Rates>
A container for one or more <Rate> blocks. Each <Rate> in
<Rates> defines a different price for the room or itinerary combination.
Use the <Rates> element only when there are multiple rates for
the same room or itinerary combination. For example, you define multiple
rates for conditional rates,
private rates, or
conditional rates in Room Bundles.
The <Rates> element appears in the following place in the
Transaction message XML hierarchy:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>(Can also contain<Rates>) + ...
Values set in a <Rate> override pricing-related values on the
parent <Result> or <RoomBundle> element. If they are not set in <Rate>,
they inherit their value from the parent element. Only
<AllowablePointsofSale> is inherited to the <RoomBundle> element.
Syntax
The <Rates> element uses the following syntax:
<?xml version="1.0" encodin>g<="UTF-8&quo>t;?< Trans>actio<n ...> Res<ult Rates Rate rate_ru>le_id=&qu<ot;rate_rule_id" Bas>erate< currency>="cu<rrency_code"price/Baser>ate < Ta>x currenc<y="currency_code"tax_amo>unt/Tax < Othe>rFees cur<rency="cu>rrency_code&quo<t;fee_amount/Ot>herFees < ExpirationTimeexpiration_time/ExpirationTime Refundable available="[false|true]" refund>able_unti<l_days="n>umber_of_days" refu<ndable_until_ti>me="<time"/ C>hargeCurren<cy[deposit|hotel|installments|web]/Charge>Currency < AllowablePoint>sOfSale < >PointOfSale id="landing_pag<e_identifi>er"/< /Allowa>b<lePointsOfSale Occupancymax_number_of_intended_occupants/Occupancy >< OccupancyDetai>ls !-- optional info ab<out the types> of guests,< whethe>r adult<s or children >--/Occupanc<yDetails> ..<. MilesIncluded Numbe>rOfMilesint<eger/Numb>erOfMiles < Provider> < Text language=&q>uot;en&qu<ot; text=">;provider-name" < > /Provider < > < Loyalt>yCampai<gnIDcampaign>_ID/LoyaltyCampaignID /MilesIncluded ... /Rate ... /Rates /Result ... /Transaction
Attributes
The <Rates> element has the following attributes:
| Attribute | Required? | Description |
|---|---|---|
| rate_rule_id | Optional | For conditional rates, this ID matches a rate to a definition in your Rate Rule Definition file. The character limit for this field is 40 characters. This ID cannot be empty string. |
Child elements
The <Rates> element has the following child elements:
| Child Element | Required? | Type | Description |
|---|---|---|---|
| <AllowablePointsOfSale> | Optional | Object | One or more landing pages that are eligible for the
hotel. This element uses the same syntax as the
<AllowablePointsOfSale> on <Result>. |
| <Baserate> | Required | float | The price of the room for the stay. This element uses the same
syntax as the <Baserate> on <Result>.
Note: The |
| <ChargeCurrency> | Optional | enum | When and where the user pays for a booking. This element uses the
same syntax as a <ChargeCurrency> in a
<Result>. |
| Optional | string | Deprecated: Custom fields that you can use to pass
additional data associated with a hotel to a landing page. This element
uses the same syntax as a <Custom[1‑5]> in a
<Result>. There is a limit of 200 characters per custom field. For
more information, refer to
landing page files. If <Custom> elements are provided in the
<Result> element, then they are not inherited in the
<RoomBundle> element and should be defined separately for each
<RoomBundle> or it can be included in <PackageData> if
needed.
Important: Contact your Technical Account Manager (TAM) if you want
to use |
|
| <ExpirationTime> | Optional | DateTime | The date and time at which the rate is considered expired. This
element uses the same syntax as an
<ExpirationTime> in a <Result>. |
| <MilesIncluded> | Optional | boolean | Rate includes frequent flyer miles. Parameters include:
Note: |
| <Occupancy> | Optional | integer | Specifies the maximum allowed occupants for this rate. If not
specified, it is assumed to be the same as parent rate.
|
| <OtherFees> | Required | float | Fees other than the base rate and taxes that influence the final price
of a room. This element uses the same syntax as
<OtherFees> in a <Result>.
If |
| <Refundable> | Optional | Object | Enables listing a rate as being fully refundable or providing a free
cancellation. If not provided, no information about a refund is displayed.
A refund policy at the <PackageData> level overrides the refund policy
at the <Result> level. A refund policy at the <Rates> level overrides
the refund policy at the <PackageData> level. Refundable pricing can
also be highlighted to users through alternative options without directly
modifying your transaction message schema. Learn more about these options
Refundable rates policy.
The following example shows the <Refundable available="1" refundable_until_days="7" refundable_un>til_time="18:00:00"/ Note: We recommend setting all of the attributes. A feed status warning message is generated when one or more attributes are not set. If you don't set any attributes, the rate does not display as refundable. The attributes are:
When setting the attributes, note the following:
|
| <Tax> | Required | float | The taxes that are calculated for the final price of a room. This
element uses the same syntax as the a <Tax> in a
<Result>. |
Examples
Base rate and conditional rate
The following example shows a Transaction message that contains a base rate and a conditional rate:
<?xml version="1.0" encoding>=<"UTF-8" ?
Transaction timestamp="2023-05-1>8T1<6:20:0>0-04:<00"> id=<"42&>quot;<
Resu>lt
Pro<perty123>4/Pro<perty
> < Checkin202<3-04-10/Checkin
Nig>hts1/N<ights
> Bas<erate currency=&qu>ot;US<D&qu>ot;20<0.00/Baserate
Tax cu>rren<cy="U>SD&quo<t;20.>00/Tax
< OtherFees currency="USD"1.00/OtherFees
Rates
> !<-- The rate_rule_id is req>uired whe<n using conditional rates --
Rate rate_rule_id=&quo>t;mobile&<quot;
!-- Overr>ide ba<se rate a>nd taxes <for conditional ra>tes -<-
> B<asera>te cu<rrency>=&qu<ot;USD&>q<uot;180.00/B>aserate
Tax currency="USD"18.00/Tax
/Rate
/Rates
/Result
/Transaction
Multiple conditional rates
The following example defines a base rate and multiple conditional rates
within a <RoomBundle>:
<?xml version="1.0" encoding>=<"UTF-8" ?
Transaction timestamp="2023-05-1>8T1<6:20:0>0-04:<00"> id=<"42&>quot;<
Resu>lt
Pro<perty123>4/Pro<perty
> < Checkin20<23-04-10/Checkin
Nights2/Nights
!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room b>undle< in subseq>uent transaction<
messages. --
RoomBundle
...
!-- >RoomID <is req>u<ired, P>ackageI<D is reco>mme<nded. --
> Ro<omID5/RoomID
PackageID>ABC/Pac<kageID
!-- Basera>te is <required.> --
< Baserate curren>cy=&q<uot;>USD&quo<t;275.00/Baserate
>Tax <currency=&>quot;USD<"27.50/Tax
OtherFees currency="USD"2.00/OtherFees
!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL and it should be within 50 characters in length for >optimal<
per>forma<nce. For de>tails, s<ee Using Variables and Conditions. --
RatePlanID>5-ABC/R<atePlanID
!-- Occupancy is mandatory for RoomBundle elemen>ts. --
< !--> <Elements b>elow wi<ll get inherited> to neste<d rate el>e<ments. --
> O<ccupancy2/Occupan>cy
< Occupan>cyDetail<s
NumAdul>ts2/NumA<dults
/OccupancyDetails
InternetIncluded1/InternetIncluded
>
<!-- Rate rule >&qu<ot;mobile"> overrid<es ch>argeCurre<ncy, "us_or_gb" >doesn't<. --
ChargeCurren>cyweb/<ChargeCur>rency
< Rates
Ra>te ra<te_r>ule_id=&quo<t;mobile"
> Bas<erate curr>ency="<USD"258.33/Baserate
Tax currency="USD"2>5.83/Tax
< OtherFees c<urrency="U>SD"1<.00/O>therFees
< !-- The value belo>w overrides< ChargeCurrency from ro>ombund<le. --
> Cha<rgeCurrencyhotel/C>harge<Curr>ency
< /Rate
Rate rat>e_ru<le_id=&quo>t;us_or_g<b&quo>t;
< >Baser<ate currenc>y=&<quot;US>D<"268.33>/Baserate
Tax currency="USD"26.83/Tax
OtherFees currency="USD"1.00/OtherFees
/Rate
/Rates
/RoomBundle
/Result
/Transaction
<RoomBundle>
Defines pricing and availability for Room Bundles as a child of
<Result> in a <Transaction> message. Define a separate element for each
package or itinerary combination. To define the package and terms of the
Room Bundles, use <RoomData>.
The <RoomBundle> element appears in the following place in the
Transaction message XML hierarchy:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
For more information, refer to Using Room Bundles.
Syntax
The <RoomBundle> element uses the following syntax:
<?xml version="1.0" encodin>g<="UTF-8&quo>t;?< Trans>action ... < Result > ... < RoomBundle !-- Required unless spe<cifiedi>nli>ne unde<r Room>Data --< >RoomIDr<oom_ID/RoomID< !-- R>equ>ired P<ackageDat>a -- < PackageID>package_<ID/PackageID !-- Add Loyalty >point i<nformation --> Mi<lesIncluded > <NumberOfMilesi>nteger/Nu<mberOfMi>les < Provider Text language=">;en"< text=&qu>ot;provid<er-name" > /Provi<der Loyalty>Campaig<nIDcampaign_ID>/Loyalty<CampaignID> > /<MilesIncluded !-- Required> -- < Base>rate cu<rrency="cu>rrency_<code"price/Baserate > !-<- Re>quired <-- Tax cu>rrency=<"currency_code"taxes/Tax> !--< Required >-- < OtherFees currency="currency_code"other_fees/OtherFees Refundable available="[false|true]>" <refundable_unti>l_days=<"number_o>f_days" refundable_<until_time=&quo>t;time&<quot;/ > !-- Required -- Charge<Currency[d>eposit|<hotel|installmen>t<s|web]/ChargeCurrency Occupancymax_number_of_intended_occupants/Occupancy >< OccupancyDe>tails !-<- optional info a>bout the type<s of guests, > whethe<r adults or chil>dren --/Occup<ancyDetails > Break<fastIncludedboo>lean_value/Br<eakfastIncluded<>/span> In<ternetIncl>udedboolean_<value/Inter>netInclu<ded > < Park>ingInc<ludedboolea>n_value/Par<kingInc>l<uded >RatePlanIDrate_plan_ID/RatePlanID Rates.../Rates /RoomBundle ... /Result /Transaction
Attributes
The <RoomBundle> element has no attributes.
Child elements
The <RoomBundle> element has the following child elements:
| Child Element | Required? | Type | Description |
|---|---|---|---|
| <Baserate> | Required | float | Defines the price of the Room Bundle for the stay. This element uses
the same syntax as <Baserate> in <Result>, with the
following exception:
|
| <BreakfastIncluded> | Optional | boolean | Specifies whether this Room Bundle includes breakfast with the rate. |
| <ChargeCurrency> | Optional | enum | When and where the user pays for a booking. This element uses the same
syntax as <ChargeCurrency> in a <Result>.
The default value is |
| Optional | string | Deprecated: Custom fields for passing additional data
to the landing pages for the Room Bundle. These elements use the same
syntax as <Custom[1-5]> in <Result>. There is a
limit of 200 characters per custom field. For more information, refer to
landing page files.
Custom variables are listed only when you send the prices
in the Transaction message. If <Custom> elements are provided in
the <Result> element, then they are not inherited in the
<RoomBundle> element and should be defined separately for each
<RoomBundle> or it can be included in <PackageData> if
needed.
Important: Contact your Technical Account Manager (TAM) if you want
to use |
|
| <InternetIncluded> | Optional | boolean | If a Room Bundle includes internet access at no charge, while other bundles wouldn't include that amenity. Don't set this element for Room Bundles in a hotel that provides free internet to all rooms. This element does not apply to in-room wired internet or wireless internet that is not available in guest rooms. |
| <MilesIncluded> | Optional | boolean | Rate includes frequent flyer miles. Parameters include:
Note: |
| <Occupancy> | Required | integer | Specifies the maximum allowed occupants for this rate. For example, a
large suite might be able to physically accommodate 6 guests, but the
"Honeymoon Package" allows 2 guests only.
This value must be less than or equal to the
When defining occupancy in your landing page URL, use the
The value of Notes:
|
| <OtherFees> | Required | float | Fees other than the base rate and taxes that influence the
final price of a room. The <OtherFees> element takes
a single required attribute, currency, that defines the
three-letter currency code for the fees. For example, use
USD for US dollars. |
| <PackageID> | Optional (recommended) | string | The unique ID for the package data. Use this ID to match the
Room Bundle data with what was sent in <PackageData>. For
more information, refer to
Room
Bundle metadata. (You
can also use this ID to reference a common Room Bundle definition used
in a single Transaction message when defining Room Bundle data
inline.) |
| <ParkingIncluded> | Optional | boolean | Whether a Room Bundle includes parking at no charge, where
parking would otherwise be a paid service at this hotel. Don't specify
a value for this element for a hotel that offers free parking.
Valid values are |
| <RatePlanID> | Optional | string | The Rate Plan ID represents the unique identifier for a
room and package combination. For example, given a
<RoomID> value of 5 and a
<PackageID> value of ABC, you could use a value of
5-ABC for <RatePlanID>. We strongly recommend using
RatePlanID as a variable to build your dynamic landing page
(formerly Point of Sale) URL.
Note: RatePlanID should be within 50 characters in length for optimal performance. For more information, refer to Using Variables and Conditions. |
| <Rates> | Optional | <Rates> |
Rates that override the defaults for this Room Bundle. This
element uses the same syntax as <Rates> in <Result>. |
| <Refundable> | Optional | Object | Enables listing a rate as being fully refundable or providing a free
cancellation. If not provided, no information about a refund is displayed.
A refund policy at the <PackageData> level overrides the refund policy at
the <Result> level. A refund policy at the <Rates> level overrides
the refund policy at the <PackageData> level. Refundable pricing can
also be highlighted to users through alternative options without directly
modifying your transaction message schema. Learn more about these options
Refundable rates policy.
The following example shows the <Refundable available="1" refundable_until_days="7" refundable_un>til_time="18:00:00"/ Note: We recommend setting all of the attributes. A feed status warning message is generated when one or more attributes are not set. If you don't set any attributes, the rate does not display as refundable. The attributes are:
When setting the attributes, note the following:
|
| <RoomID> | Required | string | The unique ID for the room data. Use this ID to match the
Room Bundle data with what you sent in <RoomData>.
For more information, refer to
Room Bundle metadata. (You can also use this ID to reference a
common room definition in a single Transaction message when defining
room data inline.) |
| <Tax> | Required | float | The taxes that are calculated for the final price of a room.
The <Tax> element takes a single required attribute,
currency, that defines the three-letter currency code
for the taxes. For example, use USD for US dollars. |
Examples
Single occupancy bundle
The following example defines a response with a single occupancy bundle.
When a user selects 1 in the Occupancy picker, Google displays the lowest
eligible price regardless of occupancy.
If a single occupancy price is not available, then Google will show the lowest double-occupancy price. Note that single occupancy prices are not live queried if double-occupancy or more prices are cached for an itinerary.
This example references predefined room and package metadata with the
<RoomID> and <PackageID> elements. Use the <RoomData> and
<PackageData> elements to define that information.
<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 1 example ----->
<Transaction timestamp="2017-07-18T16:20:00-04:00" id=>&qu<ot;12345678"
!-- Part1: Define RoomData and PackageData i>n P<ropertyDataSet --
!-- Note: Once defined it does not have to be repeated for future
Transaction Messages.
PropertyDataSets can also be defined and sent in their own
Transaction Message separately from pricing. Google can be
configured to pull just PropertyDataSets once per day
(or on a prede>fin<ed frequency). >--
<Property>DataSe<t
Pro>perty<180054/Property
!-- Can be reused by mult>iple <Room Bun>dles --<
R>oomDat<a
> RoomID<0607>73/RoomID<
Name
Text text="Single Queen Room - No>n-Smoking<" language="en"/
Text text="Chambre de la> Roi Pr<emium> - Pas <de Fumeurs" language="fr"/
/Name
!-- Room can accommodate up to 4, but p>ackage <data spe>c<ifies occ>upanc<y
> b<etween 1> to 4 -<-
> Capa<city4/C>apacity<
> /RoomDat<a
RoomData
RoomID436233/RoomID
Name
> Text te<xt="Premium King Room - Non-Smoking" language="en">;/
< <>/span>Text tex<t=">C<hambre de> le R<oi Premiu>m - P<as de Fumeurs" language="fr"/
> < /Name
> Capac<ity4/Capa>city
< >/RoomData
<!-- Can b>e< reused by> multip<le Room Bundle>s -<-
PackageDa>ta
< PackageIDP11111/PackageID
Occupancy1/Occupancy
ChargeCurrencyweb/ChargeCurrency
> Re<fundable availa>b<le="1"> refund<able_until_days=>&<quot;7"
> < ref>undable_unti<l_time=&quo>t;18:00<:00">/
< P>arkingIncluded<1/Parking>I<ncluded
> Int<ernetIncluded1>/In<ternetIncluded
> /Pa<ckageData
PackageData
PackageIDP54321/PackageID
Occupancy2/Occupancy
Char>geCurre<ncyweb/ChargeCu>r<rency
Refu>ndable <available=">1<" refundable>_unti<l_days=">;7&qu<ot;
> ref<undable_u>ntil_t<ime=">18:00:0<0"/
> < ParkingInclu<ded1/ParkingIn>clu<ded
Inter>netIncl<uded1/InternetIncluded
/PackageData
PackageData
PackageIDP12345/PackageID
O>ccupanc<y4/Occupancy
> < Charge>Currencyweb/Ch<argeCurrency
> < Refundable avai>lable<="1&quo>t; <refundable_until>_days=<"1"
refundable_until_time=&>quot;<18:00:00"/
ParkingIncluded1/ParkingIncluded
> In<ternet>Inclu<ded1/InternetIncluded
/PackageData
/PropertyDataSet
!-- Effic>ient <method o>f defi<ning Room> Bund<les --
> !-- Pa<rt 2: Re>feren<ce Roo>m<Data an>d Pac<kageData through ID --
> Res<ult
!->- Singl<e occu>pancy <pricing> will b<e specifi>ed in <a room bun>dle bel<ow --
Property18005>4/Prop<erty
>Checkin<2017-10-07/Checkin>
<Nigh>ts2/Nig<hts
!-- Base Room Bu>ndle< --
Ro>omBundl<e
Ro>omID060773/Ro<omID
>Packa<geIDP54321/>Packa<geID
> Basera<te cur>rency=<"U>SD"<;199.99/B>aserat<e
Ta>x curre<ncy="USD"25.12/Tax
OtherFees currency="USD"2.00/OtherFees
> Ra<tePlanID060773-P54321/R>atePla<nID
/>RoomBun<dle
RoomBundle>
< >span>RoomID060<773/RoomID
Package>IDP1<1111/Packa>geID
< !-- Pr>ice for 1 (&q<uot;occupan>cy&qu<ot;) is the> lowe<st price and will be
> < di>splayed --
< Baserate <currenc>y="<;USD">;174.9<9/Baserate>
<Tax currency="USD"22.08/Tax
OtherFees currency="USD"2.00/OtherFees
RatePlanID06>0773-P1<1111/RatePlanID
/Ro>omBund<le
!->- Premi<um Room Bundle --
> R<oomB>undle
< RoomID436233>/RoomID
< P>ackageIDP12345</PackageID>
!-- Pr<ice for 4 (>"<;occupancy&>quot;<), any eligible room bundle with 1 or more
occupancy will be displayed--
Baserate currency="USD>&qu<ot;298.>8<8/Baserate
> Tax currency="USD"42.12/Tax
OtherFees currency="USD"10.00/OtherFees
RatePlanID436233-P12345/RatePlanID
/RoomBundle
!-- ..Continue providing all available RoomBundle rates under matched
property for 1 or more occupancies..--
/Result
/Transaction
Two or more occupancies
The following example defines a response containing two or more occupancies.
This example references predefined room and package metadata with the
<RoomID> and <PackageID> elements. Use the <RoomData> and
<PackageData> elements to define that information.
<!-- Efficient method of defining Room Bundles-->
<!----- Occupancy of 3 example ----->
<Transaction timestamp="2017-07-18T16:20:00-04:00" id=>&qu<ot;12345678"
!-- Efficient method of def>ini<ng Room Bundles--
!-- Part1: Define RoomData and PackageData i>n P<ropertyDataSet >--
<Property>DataSe<t
Pro>perty<180054/Property
!-- Can be reused by mult>iple <Room Bun>dles --<
R>oomDat<a
> RoomID<0607>73/RoomID<
Name
Text text="Single Queen Room - No>n-Smoking<" language="en"/
Text text="Chambre de la> Roi Pr<emium> - Pas <de Fumeurs" language="fr"/
/Name
!-- Room can accommodate up to 4, but p>ackage <data spe>c<ifies occ>upanc<y
> b<etween 1> to 4 -<-
> Capa<city4/C>apacity<
> /RoomDat<a
RoomData
RoomID436233/RoomID
Name
> Text te<xt="Premium King Room - Non-Smoking" language="en">;/
< <>/span>Text tex<t=">C<hambre de> le R<oi Premiu>m - P<as de Fumeurs" language="fr"/
> < /Name
> Capac<ity4/Capa>city
< >/RoomData
<!-- Can b>e< reused by> multip<le Room Bundle>s -<-
PackageDa>ta
< PackageIDP33333/PackageID
Occupancy3/Occupancy
ChargeCurrencyweb/ChargeCurrency
> Re<fundable availa>b<le="1"> refund<able_until_days=>&<quot;7"
> < ref>undable_unti<l_time=&quo>t;18:00<:00">/
< P>arkingIncluded<1/Parking>I<ncluded
> Int<ernetIncluded1>/In<ternetIncluded
> /Pa<ckageData
PackageData
PackageIDP12345/PackageID
Occupancy4/Occupancy
Char>geCurre<ncyweb/ChargeCu>r<rency
Refu>ndable <available=">1<" refundable>_unti<l_days=">;1&<quot;
> ref<undabl>e_unt<il_time=>"<18:00:00&>quot;</
> ParkingIn<cluded1/>Parki<ngIncl>u<ded
> In<ternetIncluded1/InternetIncluded
/PackageDat>a
/<PropertyDataSet
Result
Property180054/Property
Ch>eckin<2017-10-07/Checkin
>Night<s2/Nights
> !--< Efficient method of defining Room Bundles --
!-- Part 2: Reference RoomData and Pac>kageDat<a thro>ugh ID< --
> !-- Ba<se Room B>undle <--
Roo>mBundle<
!-- Baserate abo>ve and< attribut>es must< match atleast one> room< bun>dle
< below --
R>oomID<060773/Roo>mID
< PackageIDP3<3333/PackageID
Baser>ate c<urrency=&q>uot;USD<">499.99</Basera>te
< Tax cur>rency=<"USD&>quot;55<.12/Tax
OtherFees currency="USD"22.00/OtherFees
/Ro>omBundl<e
!-- Premium Room >Bundle< --
R>oomBund<le
RoomID436>233/R<oomI>D
< PackageIDP12345/>PackageID
< !-- Lo>west <price for 3> (&qu<ot;occupancy"), shown below, will be displayed --
Baserate currency="USD"598.88/Baserate
T>ax <currenc>y<="USD&q>uot;62.12/Tax
OtherFees currency="USD"30.00/OtherFees
/RoomBundle
!-- ..Continue providing all available RoomBundle rates under matched
property for 2 or more occupancies..--
/Result
/Transaction
Multiple room bundles
The following example sets Occupancy in multiple Room bundles to demonstrate possible hostel room pricing.
<?xml version="1.0" encodin>g<="UTF-8&quo>t;?<
Trans>action ...
< Result
...
!-- >Suite< Room Bund>le --
< RoomBundl<e
> RoomID<suite1/Ro>omID
< >PackageIDstand<ard/Packa>g<eID
>Occupan<cy2/Occupancy
!>-- Pric<e for room --
Bas>erate< currency>="<USD"80.00/Bas>erat<e
> Tax< currency="USD">;5.1<2/Tax
> Other<Fees cur>rency=&qu<ot;U>SD"2.0<0/OtherFees
RoomData
Nam>e
< >span>Text text<="Su>ite f<or 2" >langua<ge="en"/
/N>ame
< /RoomData
< /RoomBundle
< !-- >Small D<orm Room >Bundle <--
Roo>mBundle<
Ro>o<mIDsmall_d>orm/Roo<mID
PackageIDe>conomy/<PackageID
Occupan>cy1/O<ccupancy
> !<-- Price per bed ->-
< >Baserat<e currency="USD&quo>t;35<.00/Basera>te
< Tax cu>rrency=&q<uot;>USD"3.<50/Tax
OtherFees currency="USD">;2.00/Oth<erFee>s
< R>oomData
< Name
> < Text text="1 bed in sm>all d<orm" >languag<e=&quo>t;en"</
> /Nam<e
/>RoomDat<a
/Roo>mBundle<
!--> <Large Dorm> Room B<undle --
RoomBun>dle
< RoomIDlarge_d>orm/RoomID
< PackageIDec<onomy/PackageID
> <Occu>pancy1/<Occupancy
!-- Pric>e pe<r bed --
> Ba<serate c>urrency=&<quot>;USD"2<0.00/Baserate
Tax currency="USD&quo>t;2.50/Ta<x
> Othe<rFees cur>rency<="USD&>quot;2.00/O<therFee>s<
RoomD>ata
Name
Text text="1 bed in large dorm" language="en"/
/Name
/RoomData
/RoomBundle
...
/Result
/Transaction
Multiple Conditional rates
The following example defines a base rate and multiple conditional rates
within a <RoomBundle>:
<?xml version="1.0" encoding>=<"UTF-8" ?
Transaction timestamp="2023-05-1>8T1<6:20:0>0-04:<00"> id=<"42&>quot;<
Resu>lt
Pro<perty123>4/Pro<perty
> < Checkin20<23-04-10/Checkin
Nights2/Nights
!-- When Google receives new room bundle information for an itinerary, all
previous room bundle pricing is dropped from Google's cache. Thus, if you
want to delete a specific room bundle from Google's cache, you may do so
by simply not providing that specific room b>undle< in subseq>uent transaction<
messages. --
RoomBundle
...
!-- >RoomID <is req>u<ired, P>ackageI<D is reco>mme<nded. --
> Ro<omID5/RoomID
PackageID>ABC/Pac<kageID
!-- Basera>te is <required.> --
< Baserate curren>cy=&q<uot;>USD&quo<t;275.00/Baserate
>Tax <currency=&>quot;USD<"27.50/Tax
OtherFees currency="USD"2.00/OtherFees
!-- RatePlanID is optional and represents the unique identifier for a
room and package data combination. We strongly recommend using RatePlanID
as a variable to build your dynamic landing page (formerly Point of Sale)
URL and it should be within 50 characters in length for >optimal<
per>forma<nce. For de>tails, s<ee Using Variables and Conditions. --
RatePlanID>5-ABC/R<atePlanID
!-- Occupancy is mandatory for RoomBundle elemen>ts. --
< !--> <Elements b>elow wi<ll get inherited> to neste<d rate el>e<ments. --
> O<ccupancy2/Occupan>cy
< Occupan>cyDetail<s
NumAdul>ts2/NumA<dults
/OccupancyDetails
InternetIncluded1/InternetIncluded
>
<!-- Rate rule >&qu<ot;mobile"> overrid<es ch>argeCurre<ncy, "us_or_gb" >doesn't<. --
ChargeCurren>cyweb/<ChargeCur>rency
< Rates
Ra>te ra<te_r>ule_id=&quo<t;mobile"
> Bas<erate curr>ency="<USD"258.33/Baserate
Tax currency="USD"2>5.83/Tax
< OtherFees c<urrency="U>SD"1<.00/O>therFees
< !-- The value belo>w overrides< ChargeCurrency from ro>ombund<le. --
> Cha<rgeCurrencyhotel/C>harge<Curr>ency
< /Rate
Rate rat>e_ru<le_id=&quo>t;us_or_g<b&quo>t;
< >Baser<ate currenc>y=&<quot;US>D<"268.33>/Baserate
Tax currency="USD"26.83/Tax
OtherFees currency="USD"1.00/OtherFees
/Rate
/Rates
/RoomBundle
/Result
/Transaction
<OccupancyDetails>
<Occupancy> in a transaction message specifies the maximum number of guests
for a room or package. <OccupancyDetails> can contain additional information
such as the number and type of guests (adults or children).
When <Occupancy> and <OccupancyDetails> appear within the <Rates> element
of <Result> or <RoomBundle>, it means that the rate is constrained by
the occupancy details.
If you include <OccupancyDetails> in a <RoomBundle>, along with a nested
<Rate> element you can't send a basic <Occupancy> within the <Rate>;
instead one of the following options is recommended:
- Omit occupancy from
<Rate>: In this case, the<Rate>inherits the<OccupancyDetails>directly from the<RoomBundle>
or,
- Duplicate
<OccupancyDetails>: In this case, send additional identical<OccupancyDetails>in both the<RoomBundle>and the nested<Rate>element
Syntax
When <OccupancyDetails> appears, it is always preceded by <Occupancy>.
Note the following syntax:
<?xml version="1.0" encodin>g<="UTF-8&quo>t;?<
Trans>action ... <
Result>
...
Occupancymax_number_o<f_intended>_occu<pants/Occupancy
> Occ<upancyDet>ails
NumAd<ultsnumber>_of_adu<lts/NumA>dults
< Children
Child age=age>_of_one_c<hild_guest/
Child age=age>_of_one<_child_gu>est/
< /Children
> </Occupa>n<cyDetails
>/Result
/TransactionChild elements
The <OccupancyDetails> element has the following child elements:
| Child Element | Required? | Type | Description |
|---|---|---|---|
| <NumAdults> | Required | integer | The number of adult guests. Min:1, Max:20. |
| <Children> | Optional | Object | A container for one or more <Child> elements. |
| <Child age> | Optional | integer | The maximum age for this Child—for example, <Child age="17">. |
Examples
The following examples show how <OccupancyDetails> may appear within
<Results>, <RoomBundle>, or the <Rates> child element.
Result response
The following example defines one itinerary and its pricing for one
property in response to a Live Pricing Query where the user specified the
number and types of guests. Here, the <OccupancyDetails> -- 2 adults and
one child -- are returned in <Result>.
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-2>3T1<6:20:0>0-04:<00"> id=&q<uot;42&qu>ot;
< Result
Prope<rty0607>73/Pr<operty
> RoomIDRo<omType101/>RoomI<D
P>ackageIDPa<ckage101>/Pack<ageID
> < Checkin20<18-06-10/Checkin
Ni>ghts2/<Nights
> Bas<erate currency=&qu>ot;US<D&qu>ot;27<8.33/Baserate
Tax cu>rren<cy="U>SD&qu<ot;25.12/Tax
Othe>rFees c<urrency="USD">2.00/<OtherFees
Allowabl>ePoin<tsOfSale
> < PointOfSal<e id="site1>"/<
/All>o<wablePoint>sOfSale<
Occ>upancy3/O<ccupancy
Oc>cupancy<Details
> <NumAdults2/NumAdu>lts<
>C<hildren
> Child age="17"/
/Children
/OccupancyDetails
/Result
/Transaction
Rates response
The following example defines one itinerary and its pricing for 1 adult
and 1 child. Here, the <OccupancyDetails> are returned in the <Rates>
element of <Result>.
<?xml version="1.0" encoding="UTF-8&quo>t<; standalone="yes"?
Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4&quo>t; <timest>amp=&<quot;201>8-04<-18T11:27>:45-0<4:00&qu>ot;
Resu<lt
P>roper<ty8251>/<Propert>y
< Checkin2018-06->20/Checkin
< Nights1/Nig<hts
Baserate c>urre<ncy=>"<;USD"62.18/Baserate>
< Tax curre>ncy=&<quot;>USD&quo<t;2.45/Tax
OtherFees cur>rency=&qu<ot;USD&qu>o<t;0.00/Oth>erFees
< Rates
Ra>te rate_rul<e_id=&quo>t<;rule-951&>quot;
< Occupancy2/Occupan<cy
Occu>pancyDetail<s
> NumAdu<lts1/NumAdults
> C<hildren
Chi>ld ag<e="1>7"/
< /Childre>n
< > /Occupa<ncyDetails
Baser>ate <currency=&>quot;USD&<quot;42.61/Baserate
> Tax <currency="USD"5.70/Tax
O>therFees <currency="USD&quo>t;0.00/<Other>Fees
< > A<llowabl>e<PointsOfSale>
PointOfSale id="yourhotelpartnersite.com"/
/AllowablePointsOfSale
/Rate
/Rates
/Result
/Transaction
Room bundle
The following example defines an occupancy of 2 adults and 1 child for
two nights, with a refundable rate. Here, the <OccupancyDetails> appear
inside <RoomBundle>
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-2>3T1<6:20:0>0-04:<00"> id=&qu<ot;42&quo>t;
<Result
> Proper<ty678129>1/Pro<perty
> < Checkin2017-08-05</Checkin
> Nigh<ts2/Ni>ghts
< ...>
Ro<omBundle
> R<oomID10291/>RoomID
< Rat>ePlanI<D564739/Ra>tePlanI<D
P>a<ckageID564>739/Pac<kageID
Occ>upancy3/O<ccupancy
> < OccupancyDetai<ls
> NumAdult<s2/NumAdults
> Chi<ldren
> <Child age="1>7"</
/Chi>ldr<en
/Occup>ancyDet<ails
ChargeCurrencyweb/ChargeCurrency
Refundable available="true" >refunda<ble_until_days="1&>quot; <refundabl>e_until<_time="23:59:>00&qu<ot; >/
< Baserate currency=">;USD<"185.>34/Ba<serate
> T<ax curr>e<ncy="US>D"37.06/Tax
OtherFees currency="USD"2.22/OtherFees
/RoomBundle
/Result
/Transaction
Multiple room bundles
The following example defines multiple <RoomBundle> rates that are
restricted to an occupancy of 2 adults and 2 children. Here, the
<OccupancyDetails> appear in the <Rates> element of <RoomBundle>.
<?xml version="1.0" encodin>g<="UTF-8"?
Transaction timestamp="2017-07-1>8T1<6:20:0>0-04:<00"> id=<"42&>quot;<
Resu>lt
Pro<perty123>4/Pro<perty
> < Checkin20<18-06-10/Checkin
Ni>ghts2/<Nights
> Bas<erate currency=&qu>ot;US<D&qu>ot;27<5.00/Baserate
Tax cu>r<rency=&quo>t;USD<"27.5>0/Tax
< Othe<rFees c>urrency<="US>D&q<uot;0/Othe>rFees
< RoomBundle
Roo>mID5/R<oomID
> Pack<ageIDSTD/PackageID>
< >span>Baserate <currency="USD">2<75.00/Base>rate
< Tax currency>=<"USD"27>.50/Tax<
OtherFe>es <currency=">USD&quo<t;0/Other>F<ees
>Interne<tIncluded1/Inter>netIncluded<
Ch>a<rgeCurrenc>yweb/Charge<Currency>
Occupanc<y4/Occupancy
> OccupancyDe<tails
> NumAdults2</NumAdult>s
< Children
> < <>/span>Child age=<"17"/
> Child a<ge="17"/
> </Children>
/Occ<upancyDetails
> Rat<es
> Rate< rate_rule_id="mobi>le&q<uot;
> Basera<te currency=&q>uot;U<SD"258.33/>Baserate
< > Tax <currency="USD"25.8>3/Tax
< OtherFees currency>="<;USD">;1.00/Other<Fees
Cha>rgeCu<rren>cyhotel/Cha<rgeCurrency
/Rat>e
< Rate rate_rul<e_id=>"u<s_or_g>b&quo<t;
> B<aserate> <currency=&qu>ot;USD"268.33/Baserate
Tax currency="USD"26.83/Tax
OtherFees currency="USD"1.00/OtherFees
/Rate
/Rates
/RoomBundle
/Result
/Transaction