این صفحه مرجعی برای پیامهای تراکنش مبتنی بر XML ارائه میدهد.
<Transaction>
عنصر ریشه یک پیام تراکنش <Transaction> است. این عنصر، ظرفی برای اطلاعات توصیفی در مورد اتاقها و بستهها و قیمتگذاری و موجودی اتاقها و بستهها است.
عنصر <Transaction> در سلسله مراتب XML پیام تراکنش در مکان زیر ظاهر میشود:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
پیامهایی که از <Transaction> به عنوان عنصر ریشه استفاده میکنند، حداقل به یک عنصر فرزند نیاز دارند. پیامهای تراکنش میتوانند هر تعداد عنصر فرزند داشته باشند، تا زمانی که حجم کل پیام از ۱۰۰ مگابایت تجاوز نکند.
نحو
عنصر <Transaction> از سینتکس زیر استفاده میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp" id="transaction_ID">
<!-- Defines data about a room or package (Room Bundle) -->
<PropertyDataSet>
...
</PropertyDataSet>
<!-- Updates/sets prices and availability for rooms and Room Bundles -->
<!-- (Also removes itineraries from inventory) -->
<Result>
...
</Result>
</Transaction>
ویژگیها
عنصر <Transaction> دارای ویژگیهای زیر است:
| ویژگی | الزامی است؟ | نوع | توضیحات |
|---|---|---|---|
| id | Required | رشته | یک شناسه منحصر به فرد برای هر پیام تراکنش. |
| partner | Optional | string | حساب همکار که پیام تراکنش برای آن است. معمولاً اگر بکاند شما فیدهای قیمت را برای چندین حساب همکار ارائه میدهد، از این استفاده میکنید. این مقدار رشتهای، مقدار "کلید همکار" است که در صفحه تنظیمات حساب در مرکز هتل فهرست شده است. |
| timestamp | Required | DateTime | لحظهای که پیام تراکنش ارسال شده است. هر پیامی که با برچسب زمانی در ۲۴ ساعت قبل ارسال شود، پردازش خواهد شد و آنهایی که این برچسب زمانی را نداشته باشند، حذف خواهند شد. پیامها به ترتیب |
عناصر فرزند
عنصر <Transaction> دارای عناصر فرزند زیر است:
| عنصر فرزند | الزامی است؟ | نوع | توضیحات |
|---|---|---|---|
| <PropertyDataSet> | Optional* | <PropertyDataSet> | یک اتاق خاص و بستههای اتاق را توصیف میکند. شما معمولاً از این عنصر در یک پیام تراکنش جداگانه برای تعریف مقادیر مشترک برای بستههای اتاق و کاهش اندازه پیامهای تراکنش خود استفاده میکنید. |
| <Result> | Optional* | <Result> | دادههای قیمتگذاری برای برنامه سفر یک اتاق یا یک عنصر |
* حداقل یکی از <PropertyDataSet> یا <Result> الزامی است. | |||
مثالها
دادههای اتاق
مثال زیر دادههای اتاق را در یک پیام تراکنش تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>5440OF</RoomID>
<Name>
<Text text="Single King Bed Room" language="en"/>
<Text text="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/satellite TV with
complimentary HBO and pay movies." language="en"/>
<Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Bathroom View" language="en"/>
<Text text="La salle de baines" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Capacity>4</Capacity>
</RoomData>
</PropertyDataSet>
</Transaction>
دادههای قیمتگذاری
مثال زیر دادههای قیمتگذاری را در یک پیام تراکنش تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">278.33</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="site1"/>
</AllowablePointsOfSale>
</Result>
<Result>
<Property>052213</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">299.98</Baserate>
<Tax currency="USD">26.42</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="otto"/>
<PointOfSale id="simon"/>
</AllowablePointsOfSale>
<MilesIncluded>
<NumberOfMiles>1200</NumberOfMiles>
<Provider>
<Text language="en" text="United Airlines"/>
</Provider>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</MilesIncluded>
</Result>
</Transaction>
نرخهای شبانه
مثال زیر دادههای قیمتگذاری را برای ۱ تا ۷ شب از ۷ ژوئن ۲۰۲۳ تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-08-24T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">209.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">419.98</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>3</Nights>
<Baserate currency="USD">614.97</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>4</Nights>
<Baserate currency="USD">819.96</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>5</Nights>
<Baserate currency="USD">999.95</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>6</Nights>
<Baserate currency="USD">1193.94</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
<Result>
<Property>1234</Property>
<Checkin>2018-06-07</Checkin>
<Nights>7</Nights>
<Baserate currency="USD">1259.93</Baserate>
<Tax currency="USD">21.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
</Result>
</Transaction>
نرخهای پایه و مشروط
مثال زیر یک پیام تراکنش را نشان میدهد که شامل یک نرخ پایه و یک نرخ شرطی است:
<?xml version="1.0" encoding="UTF-8" ?>
<Transaction timestamp="2023-05-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">200.00</Baserate>
<Tax currency="USD">20.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates -->
<Rate rate_rule_id="mobile">
<!-- Override base rate and taxes for conditional rates -->
<Baserate currency="USD">180.00</Baserate>
<Tax currency="USD">18.00</Tax>
</Rate>
</Rates>
</Result>
</Transaction>
حذف موجودی
مثال زیر چندین موجودی (اقامت یک شب برای چندین تاریخ مختلف) برای یک هتل را از موجودی حذف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-05-23T16:20:00-04:00" id="42">
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-23</Checkin>
<Nights>1</Nights>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-24</Checkin>
<Nights>1</Nights>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
<!---Sending <Baserate> is optional with <Unavailable> -->
<Result>
<Property>1123581321</Property>
<Checkin>2023-05-25</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">-1</Baserate>
<Unavailable>
<NoVacancy/>
</Unavailable>
<Tax currency="USD">0</Tax>
<OtherFees currency="USD">0</OtherFees>
</Result>
</Transaction>
<PropertyDataSet>
محفظهای برای اطلاعات اتاق و بسته (یا بسته اتاق ) در یک پیام <Transaction> . مقادیر تعیینشده روی هتل، مقادیر تعیینشده روی هتل همکار را نادیده میگیرد. گوگل این اطلاعات را ذخیره میکند تا نیازی نباشد هر بار که بهروزرسانیهای قیمت را ارسال میکنید، آن را تعریف کنید.
عنصر <PropertyDataSet> در سلسله مراتب XML پیام تراکنش در مکان زیر ظاهر میشود:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
برای اطلاعات بیشتر، به فرادادههای بسته اتاق مراجعه کنید.
نحو
عنصر <PropertyDataSet> از سینتکس زیر استفاده میکند:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet> <!-- (Required) ID that matches the Hotel List Feed --> <Property>hotel_ID</Property> <!-- (Optional) Defines metadata about a room --> <RoomData> ... </RoomData> <!-- (Optional) Defines package metadata to be paired with rooms (Room Bundles) --> <PackageData> ... </PackageData> </PropertyDataSet> ... </Transaction>
ویژگیها
عنصر <PropertyDataSet> هیچ ویژگی (attribute) ندارد.
عناصر فرزند
عنصر <PropertyDataSet> دارای عناصر فرزند زیر است:
| عنصر فرزند | الزامی است؟ | نوع | توضیحات |
|---|---|---|---|
| <PackageData> | Optional* | <PackageData> | یک بسته اتاق را توصیف میکند. این دادهها با یک شریک و هتل مرتبط هستند، اما با یک برنامه سفر مرتبط نیستند. این عنصر مشابه <RoomData> است، اما امکانات و اصطلاحاتی را توصیف میکند که بخشی از توضیحات فیزیکی اتاق نیستند.شما در بهروزرسانیهای قیمتگذاری خود به شناسه بسته اشاره میکنید. برای اطلاعات بیشتر، به فرادادههای بسته اتاق مراجعه کنید. |
| <Property> | Required | string | شناسه هتلی که دادههای مرتبط به آن اعمال میشود. مقدار این عنصر باید رشتهای باشد که با <id> فهرست هتلها در فید فهرست هتل شما مطابقت داشته باشد. |
| <RoomData> | Optional* | <RoomData> | یک اتاق را توصیف میکند. این دادهها با یک شریک و هتل مرتبط هستند، اما با یک برنامه سفر مرتبط نیستند. شما در بهروزرسانیهای قیمتگذاری خود به شناسه اتاق اشاره میکنید. |
* حداقل یکی از <PackageData> یا <RoomData> الزامی است. | |||
مثالها
دادههای اتاق و بسته
مثال زیر دادههای اتاق و بسته را در یک <PropertyDataSet> نشان میدهد:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
وقتی قیمتها و موجودی این اتاق و بسته اتاق را ارسال میکنید، شناسههای اتاق و بسته را در پیامهای قیمتگذاری خود ذکر میکنید. نتیجه این است که حجم پیامهای خود را تا حد زیادی کاهش میدهید و همچنین میزان خطاهایی که ممکن است به دلیل دادههای تکراری با آنها مواجه شوید را نیز کاهش میدهید. برای اطلاعات بیشتر، به فراداده بسته اتاق مراجعه کنید.
<RoomData>
فرادادههای مستقل از برنامه سفر در مورد اتاقها و به طور کلی، بستههای اتاق (از آنجا که بستههای اتاق، اتاقها به علاوه امکانات اضافی هستند) را تعریف میکند. <RoomData> برای کاهش تکرار دادههای توصیفی در فید قیمت خود استفاده کنید.
عنصر <RoomData> در سلسله مراتب XML پیام تراکنش در مکان زیر ظاهر میشود:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
عناصر <RoomData> حاوی اطلاعاتی هستند که با یک شریک و هتل مرتبط هستند، اما با یک برنامه سفر مرتبط نیستند. هدف مورد نظر برای همه دادههای غیر برنامه سفر است.
عنصر <RoomData> مشابه <PackageData> است، اما به جای امکانات و شرایط یک پکیج، اتاق فیزیکی را توصیف میکند. شما از <RoomData> و <PackageData> به صورت ترکیبی برای ارائه جزئیات مربوط به بستههای اتاق استفاده میکنید. برای اتاقهای جداگانه که بخشی از یک پکیج نیستند، فقط <RoomData> استفاده کنید.
شما میتوانید هر دو عنصر <RoomData> و <PackageData> را برای یک اتاق یا بسته اتاق تعریف کنید. وقتی گوگل آن اتاق یا بسته را در نتایج جستجو نمایش میدهد، توضیحات هر دو را که با خط فاصله از هم جدا شدهاند، در بر میگیرد.
برای اطلاعات بیشتر، به فرادادههای بسته اتاق مراجعه کنید.
نحو
عنصر <RoomData> از سینتکس زیر استفاده میکند:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet> ... <RoomData> <RoomID>room_ID</RoomID> <Name> <Text text="room_name" language="language_code"/> ... </Name> <Description> <Text text="room_description" language="language_code"/> ... </Description> <Capacity>max_number_of_occupants</Capacity> <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults, children, or seniors --></OccupancyDetails> <OccupancySettings> <MinOccupancy>min_number_of_occupants</MinOccupancy> <MinAge>min_age_of_occupants</MinAge> </OccupancySettings> <PhotoURL> <Caption> <Text text="photo_description" language="language_code"/> ... </Caption> <URL>photo_location</URL> </PhotoURL> <RoomFeatures> ... </RoomFeatures> </RoomData> ... </PropertyDataSet> </Transaction>
ویژگیها
عنصر <RoomData> هیچ ویژگی (attribute) ندارد.
عناصر فرزند
عنصر <RoomData> دارای عناصر فرزند زیر است:
| عنصر فرزند | الزامی است؟ | نوع | توضیحات |
|---|---|---|---|
| <Capacity> | Optional | integer | حداکثر تعداد مهمانانی که یک اتاق میتواند از نظر فیزیکی در خود جای دهد . برای یک اتاق، ظرفیت بیشتر یا مساوی با میزان اشغال اتاق است. وقتی این مقدار مشخص شود، باید مساوی یا بزرگتر از مقدار عنصر مقدار |
| <Description> | Optional | Object | شرح مفصلی از اتاق. این عنصر باید حاوی اطلاعاتی باشد که توسط عناصر دیگر یا عنصر <Name> توصیف نشده باشد. هنگام مشخص کردن شرح اتاق، نباید از حروف بزرگ استفاده کنید. عنصر
برای هر زبانی که ممکن است تبلیغ یا لینک رزرو رایگان شما در آن نمایش داده شود، از یک عنصر مثال زیر نسخههای فرانسوی و انگلیسی توضیحات اتاق را نشان میدهد: <Description> <Text text="Two queen-sized beds" language="en"/> <Text text="Deux lits de la reine" language="fr"/> </Description> |
| <Name> | Required | string | نام دسته اتاق. این مقدار باید با آنچه در صفحه فرود هتل (که قبلاً محل فروش بود) نمایش داده میشود، مطابقت داشته باشد. مقدار این عنصر را با حروف بزرگ تنظیم نکنید. این عنصر یک عنصر فرزند به
برای هر زبانی که ممکن است تبلیغ یا لینک رزرو رایگان شما در آن نمایش داده شود، از یک عنصر مثال زیر نسخههای فرانسوی و انگلیسی نام اتاق را نشان میدهد: <Name> <Text text="Standard Double Room" language="en"/> <Text text="Le chambre double" language="fr"/> </Name> |
| <Occupancy> | Optional | integer | حداکثر تعداد مهمانانی که یک اتاق برای آنها در نظر گرفته شده است . برای مثال، یک سوئیت بزرگ ممکن است بتواند از نظر فیزیکی ۶ مهمان را در خود جای دهد (ظرفیت = ۶)، اما فقط برای ۴ مهمان در نظر گرفته شده است. این مقدار باید کمتر یا مساوی عنصر مقدار |
| <OccupancySettings> | Optional | Object | تنظیماتی که میتوانند الزامات اشغال یک اتاق را محدود یا تغییر دهند. عنصر
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> لازم نیست همه عناصر فرزند را شامل کنید. |
| <PhotoURL> | Optional | Object | یک URL و عنوان اختیاری برای عکس اتاق یا بسته اتاق مورد نظر. میتوانید بیش از یک <PhotoURL> برای یک اتاق یا بسته اتاق مشخص کنید. هر URL عکس باید در <PhotoURL> مخصوص به خود باشد.این عنصر، عناصر فرزند زیر را میپذیرد:
مثال: <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." language="en"/>
<Text text="Une façon lumineuse et aérée pour profiter
de votre journée tasse de thé." language="fr"/>
</Caption>
</PhotoURL>
<PhotoURL>
<URL>https://www.foo.com/static/bar/image5678.jpg</URL>
<Caption>
<Text text="Or, perhaps you prefer coffee." language="en"/>
<Text text="Ou peut-être préférez-vous le café." language="fr"/>
</Caption>
</PhotoURL> |
| <RoomFeatures> | Optional | <RoomFeatures> | حاوی اطلاعاتی در مورد ویژگیهای اتاق است. |
| <RoomID> | Required | string | شناسه منحصر به فرد برای اتاق. از این شناسه برای تطبیق دادههای اتاق با بلوکهای <Result> در بهروزرسانیهای قیمتگذاری خود استفاده کنید. برای اطلاعات بیشتر، به فرادادههای بسته اتاق مراجعه کنید. (همچنین میتوانید هنگام تعریف دادههای اتاق به صورت درونخطی، از این شناسه برای ارجاع به تعریف اتاق مشترک در یک پیام تراکنش واحد استفاده کنید.) |
مثالها
دادههای اتاق
مثال زیر دادههای اتاق را تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>5440OF</RoomID>
<Name>
<Text text="Single King Bed Room" language="en"/>
<Text text="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/satellite TV with
complimentary HBO and pay movies." language="en"/>
<Text text="Un très grand lit avec matelas à plateau-coussin, ..." language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Bathroom View" language="en"/>
<Text text="La salle de baines" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Capacity>4</Capacity>
</RoomData>
</PropertyDataSet>
</Transaction>
فراداده اتاق و بسته
مثال زیر، متادیتای اتاق و بسته را تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
بستههای چند اتاقه
مثال زیر، متادیتای اتاق و بسته را برای چندین بسته اتاق تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<!-- A transaction message with room types result. -->
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
<RoomID>single</RoomID>
<Name>
<Text text="Single room" language="en"/>
<Text text="Chambre simple" language="fr"/>
</Name>
<Description>
<Text text="A single room" language="en"/>
<Text text="Le chambre simple" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image1235.jpg</URL>
</PhotoURL>
<Capacity>2</Capacity>
</RoomData>
<RoomData>
<RoomID>double</RoomID>
<Name>
<Text text="Double room" language="en"/>
<Text text="Chambre double" language="fr"/>
</Name>
<Occupancy>1</Occupancy>
</RoomData>
<PackageData>
<PackageID>refundbreakfast</PackageID>
<Name>
<Text text="Refundable Room with Breakfast" language="en"/>
<Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Continental Breakfast" language="en"/>
<Text text="Petit déjeuner continental" language="fr"/>
</Description>
<ChargeCurrency>hotel</ChargeCurrency>
<Refundable available="1" refundable_until_days="3"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>prepaid</PackageID>
<Name>
<Text text="Nonrefundable" language="en"/>
<Text text="Non remboursable" language="fr"/>
</Name>
<Description>
<Text text="Blah blah blad" language="en"/>
<Text text="Le blah blah blad" language="fr"/>
</Description>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="0"/>
</PackageData>
</PropertyDataSet>
</Transaction>
<RoomFeatures>
ویژگیهای موجود در اتاق را تعریف میکند.
عنصر <RoomFeatures> در سلسله مراتب XML پیام تراکنش در مکان زیر ظاهر میشود:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<RoomFeatures>
نحو
عنصر <RoomFeatures> از سینتکس زیر استفاده میکند:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <PropertyDataSet ... > ... <RoomData> <RoomFeatures> <JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle> <Beds> <Bed size="[single|semi_double|double|queen|king]"> <Width unit="cm" number="width"/> <Length unit="cm" number="length"/> </Bed> <!-- Include with any additional beds. --> </Beds> <Suite/> <Capsule/> <Roomsharing>[shared|private]</Roomsharing> <Outdoor/> <MobilityAccessible/> <Smoking>[smoking|non_smoking]</Smoking> <BathAndToilet relation="[together|separate]"> <Bath bathtub="[false|true]" shower="[false|true]"/> <Toilet electronic_bidet="[false|true]" mobility_accessible="[false|true]"/> </BathAndToilet> <OpenAirBath/> <AirConditioning/> <Balcony/> <Views> <!-- (Optional) Defines the type of views from the room. --> <!-- Example: <OceanView/> --> </Views> </RoomFeatures> ... </RoomData> ... </PropertyDataSet> </Transactions>
ویژگیها
عنصر <RoomFeatures> هیچ ویژگی (attribute) ندارد.
عناصر فرزند
عنصر <RoomFeatures> دارای عناصر فرزند زیر است:
| عنصر فرزند | الزامی است؟ | نوع | توضیحات |
|---|---|---|---|
| <JapaneseHotelRoomStyle> | Optional | enum | سبک اتاق هتل ژاپنی را نشان میدهد. مقادیر معتبر عبارتند از:
|
| <Beds> | Optional | Object | به تعداد اتاق، <Bed> دارد. توجه داشته باشید که تشکهای ژاپنی نباید در اینجا شمارش شوند. هر
<Bed> دارای عناصر فرزند زیر است:
<Beds>
<Bed size="double">
<Width unit="cm" number="140"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed/> <!-- Size unknown -->
</Beds> |
| <Suite> | Optional | empty | این عنصر را زمانی که این اتاق یک سوئیت است، فراهم کنید. |
| <Capsule> | Optional | empty | این عنصر را زمانی فراهم کنید که این اتاق یک اتاق کپسولی باشد. |
| <Roomsharing> | Optional | enum | اینکه آیا این اتاق با سایر ساکنین مانند مالکان یا سایر مهمانان به اشتراک گذاشته شده است یا خیر. مقادیر معتبر، مقادیر shared و private هستند. |
| <Outdoor> | Optional | empty | این عنصر را زمانی فراهم کنید که این اتاق، اقامتگاهی در فضای باز است که دیوارهای ثابت، لولهکشی و سیستم کنترل دما ندارد. برای مثال، اتاقهای هتل اقامتگاه فضای باز نیستند، در حالی که اردوگاههایی که مهمانان در چادر اقامت میکنند و پارکهای RV که مهمانان RV خود را میآورند، اقامتگاه فضای باز هستند. |
| <MobilityAccessible> | Optional | empty | این عنصر را زمانی فراهم کنید که این اتاق قابلیت دسترسی سیار دارد. |
| <Smoking> | Optional | enum | چه این اتاق، اتاق غیرسیگاری باشد و چه اتاق سیگاریها. مقادیر معتبر عبارتند از non_smoking و smoking . |
| <BathAndToilet> | Optional | Object | حاوی اطلاعاتی در مورد حمام و توالت در اتاق است. ویژگی این است:
این عنصر به صورت اختیاری عناصر فرزند زیر را میپذیرد:
مثال: <BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet
electronic_bidet="1"
mobility_accessible="1"/>
</BathAndToilet> |
| <OpenAirBath> | Optional | empty | این عنصر را زمانی فراهم کنید که این اتاق دارای حمام اختصاصی در فضای باز باشد. |
| <AirConditioning> | Optional | empty | این عنصر را زمانی فراهم کنید که این اتاق دارای تهویه مطبوع باشد. |
| <Balcony> | Optional | empty | این عنصر را زمانی فراهم کنید که این اتاق بالکن یا ایوان داشته باشد. |
| <Views> | Optional | Object | گزینههای معتبر عبارتند از: |
مثالها
JapaneseHotelRoomStyle مقدار پیشفرض ندارد. حذف یک مقدار منجر به خطای XML نمیشود، اما وقتی کاربر بر اساس سبک اتاق یا تعداد تخت فیلتر میکند، فهرست شما در نتایج جستجو نمایش داده نمیشود.
دو تخت یک نفره
مثال زیر نحوه استفاده از <RoomFeatures> را نشان میدهد:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two single beds -->
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed size="single">
<Width unit="cm" number="97"/>
<Length unit="cm" number="195"/>
</Bed>
</Beds>
<Suite/>
<Capsule/>
<Roomsharing>private</Roomsharing>
<Outdoor/>
<MobilityAccessible/>
<Smoking>non_smoking</Smoking>
<BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet electronic_bidet="1" mobility_accessible="1"/>
</BathAndToilet>
<OpenAirBath/>
<AirConditioning/>
<Balcony/>
<Views>
<LakeView/>
<MarinaView/>
<BeachView/>
<ForestView/>
<MountainView/>
<NatureView/>
</Views>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
دو تخت دو نفره
در زیر نمونهای از اتاق ژاپنی به سبک western با دو تخت double آمده است.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
<Beds> <!-- Two double beds-->
<Bed size="double"></Bed>
<Bed size="double"></Bed>
</Beds>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
سبک ژاپنی بدون تخت
در زیر نمونهای از یک اتاق به سبک ژاپنی بدون تخت آمده است. اطلاعات مربوط به تخت برای اتاق به سبک japanese الزامی نیست.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
وسترن ژاپنی با تخت
در زیر نمونهای از یک اتاق به سبک japanese_western با تخت دونفره بزرگ king سایز) نشان داده شده است.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
<Beds>
<Bed size="king"></Bed>
</Beds>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
اگر شریک شما اطلاعات تعداد تختها در اتاقهای japanese_western را ندارد، از مثال زیر پیروی کنید:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<RoomFeatures>
<JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
</RoomFeatures>
</RoomData>
</PropertyDataSet>
</Transaction>
<PackageData>
فرادادههای مستقل از برنامه سفر در مورد بستههای اتاق برای یک ملک را تعریف میکند. این عنصر حاوی اطلاعاتی است که با شریک و هتل مرتبط است، اما با برنامه سفر مرتبط نیست. هدف مورد نظر، تعریف یکباره تمام دادههای غیر برنامه سفر و ارجاع آن از دادههای برنامه سفر است.
عنصر <PackageData> در سلسله مراتب XML پیام تراکنش در مکان زیر ظاهر میشود:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
عنصر <PackageData> مشابه <RoomData> است، اما ویژگیها و اصطلاحات نرخ را توصیف میکند که بخشی از توضیحات فیزیکی اتاق نیستند. شما از <RoomData> و <PackageData> به صورت ترکیبی برای ارائه جزئیات مربوط به بستههای اتاق و ویژگیهای نرخ استفاده میکنید. برای اتاقهای جداگانه که بخشی از یک بسته نیستند، فقط <RoomData> استفاده کنید.
شما میتوانید هر دو عنصر <RoomData> و <PackageData> را برای یک اتاق یا بسته اتاق تعریف کنید. وقتی گوگل آن اتاق یا بسته را در نتایج جستجو نمایش میدهد، توضیحات هر دو را که با خط فاصله از هم جدا شدهاند، در بر میگیرد.
اگر یک عنصر <PackageData> را برای یک ویژگی بهروزرسانی کنید، باید تمام عناصر <PackageData> و <RoomData> را برای آن ویژگی بهروزرسانی کنید. هر <PropertyDataSet> به عنوان تمام دادههای مربوط به آن ویژگی در نظر گرفته میشود و هر داده موجود را رونویسی میکند.
برای اطلاعات بیشتر، به فرادادههای بسته اتاق مراجعه کنید.
نحو
عنصر <PackageData> از سینتکس زیر استفاده میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
<PropertyDataSet ... >
<PackageData>
<PackageID>package_ID</PackageID>
<Name>
<Text text="package_name" language="language_code"/>
...
</Name>
<Description>
<Text text="package_description" language="language_code"/>
...
</Description>
<Refundable available="[false|true]" refundable_until_days="number_of_days"
refundable_until_time="time"/>
<ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency>
<Occupancy>max_number_of_intended_occupants</Occupancy>
<OccupancyDetails><!-- optional info about the types of guests,
whether adults or children --></OccupancyDetails>
<!-- For these next 3 elements, boolean_value can be 0/1 or true/false -->
<BreakfastIncluded>boolean_value</BreakfastIncluded>
<InternetIncluded>boolean_value</InternetIncluded>
<ParkingIncluded>boolean_value</ParkingIncluded>
<PhotoURL>
<Caption>
<Text text="photo_description" language="language_code"/>
...
</Caption>
<URL>photo_location</URL>
</PhotoURL>
...
<Meals>
<Breakfast
included="[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|false]"/>
<Dinner
included="[true|false]" buffet="[true|false]"
in_room="[true|false]" in_private_space="[true|false]"/>
</Meals>
<CheckinTime>checkin_time</CheckinTime>
<CheckoutTime>checkout_time</CheckoutTime>
<MembershipBenefitsIncluded>
<ProgramName>
<Text language="en" text="Special Rewards">
</ProgramName>
<ProgramLevel>
<Text language="en" text="Platinum">
</ProgramLevel>
</MembershipBenefitsIncluded>
<OnPropertyCredit>
<Amount currency="USD">123.45</Amount>
</OnPropertyCredit>
</PackageData>
<!-- a PackageID with a MilesIncluded rate feature -->
<PackageData>
<PackageID>room_with_miles</PackageID>
<Name>
<Text text="Room with Bundled Miles" language="en">
</Name>
<ChargeCurrency>hotel </ChargeCurrency>
<MilesIncluded>
<NumberOfMiles>integer</NumberOfMiles>
<Provider>
<Text language="en" text="provider-name">
</Provider>
<!-- Add Loyalty point information -->
<LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>
</MilesIncluded>
</PackageData>
...
...
</PropertyDataSet>
...
</Transaction>ویژگیها
عنصر <PackageData> هیچ ویژگی (attribute) ندارد.
عناصر فرزند
عنصر <PackageData> دارای عناصر فرزند زیر است:
| عنصر فرزند | الزامی است؟ | نوع | توضیحات |
|---|---|---|---|
| <BreakfastIncluded> | Optional | boolean | مشخص میکند که آیا این بسته شامل صبحانه با نرخ مربوطه میشود یا خیر. مقادیر معتبر 0 (یا false ) و 1 (یا true ) هستند. ترجیح داده میشود که از |
| <ChargeCurrency> | Optional | enum | چه زمانی و کجا کاربر هزینه رزرو را پرداخت میکند. این عنصر از همان سینتکس <ChargeCurrency> در <Result> استفاده میکند. مقدار پیشفرض |
| <CheckinTime> | Optional | Time | زودترین زمان ممکن برای ورود. زمان باید کمتر از ساعت ۲۴:۰۰ به وقت محلی هتل باشد. |
| <CheckoutTime> | Optional | Time | آخرین زمان ممکن برای خروج از هتل به وقت محلی. |
| <Description> | Optional | Object | شرح مفصلی از بسته. این عنصر باید حاوی اطلاعاتی باشد که توسط عناصر دیگر یا عنصر <Name> توصیف نشده باشد. هنگام مشخص کردن شرح اتاق، نباید از حروف بزرگ استفاده کنید. عنصر <Description>
<Text text="Two breakfast buffet certificates for
each night of stay." language="en"/>
<Text text="Deux certificats petit-déjeuner buffet
pour chaque nuit de séjour." language="fr"/>
</Description> |
| <InternetIncluded> | Optional | boolean | اگر بستهای شامل دسترسی رایگان به اینترنت باشد، در حالی که سایر بستهها این امکانات را ندارند. این عنصر را برای بستههای اتاق در هتلی که اینترنت رایگان به همه اتاقها ارائه میدهد، تنظیم نکنید. این عنصر برای اینترنت سیمی داخل اتاق یا اینترنت بیسیم که در اتاقهای مهمان موجود نیست، اعمال نمیشود. مقادیر معتبر 0 (یا false ) و 1 (یا true ) هستند. |
| <Meals> | Optional | Object | حاوی اطلاعاتی در مورد وعدههای غذایی موجود در این بسته است. عنصر
ویژگیهای اختیاری فقط زمانی استفاده میشوند که برای اینکه فیلترهای وعدههای غذایی ( |
| <Name> | Required | string | نام بسته. این مقدار باید با آنچه در صفحه فرود هتل نمایش داده میشود، مطابقت داشته باشد. مقدار این عنصر را با حروف بزرگ تنظیم نکنید. این عنصر یک عنصر فرزند به <Name> <Text text="Bed and Breakfast" language="en"/> <Text text="Lit et petit déjeuné" language="fr"/> </Name> |
| <Occupancy> | Optional | integer | حداکثر تعداد مهمانانی که یک مجموعه اتاق برای آنها در نظر گرفته شده است . به عنوان مثال، یک سوئیت بزرگ ممکن است بتواند از نظر فیزیکی 6 مهمان را در خود جای دهد، اما فقط برای 4 مهمان در نظر گرفته شده است. این مقدار باید کمتر یا مساوی عنصر مقدار اگر این عنصر را هم در نکته : <Occupancy> ممکن است با <OccupancyDetails> همراه باشد که نوع مهمانان (بزرگسالان یا کودکان) را مشخص میکند. برای نحو و شرح عناصر فرزند به <OccupancyDetails> مراجعه کنید. |
| <PackageID> | Required | string | شناسه منحصر به فرد برای بسته. از این شناسه برای مطابقت دادههای Room Bundle با بلوکهای (همچنین میتوانید از این شناسه برای ارجاع به تعریف مشترک Room Bundle که در یک پیام تراکنش واحد هنگام تعریف دادههای Room Bundle به صورت درونخطی استفاده میشود، استفاده کنید.) |
| <ParkingIncluded> | Optional | boolean | آیا یک بسته اتاق شامل پارکینگ رایگان میشود، در حالی که پارکینگ در این هتل یک سرویس پولی است. برای هتلی که پارکینگ رایگان ارائه میدهد، مقداری برای این عنصر مشخص نکنید. مقادیر معتبر |
| <PhotoURL> | Optional | Object | (همانند <PhotoURL> در <RoomData> ، اما برای بستهبندی (مثلاً عکسهای غذا).) |
| <Refundable> | Optional | Object | امکان فهرست کردن یک نرخ به عنوان نرخ کاملاً قابل استرداد یا امکان لغو رایگان را فراهم میکند. در صورت عدم ارائه، هیچ اطلاعاتی در مورد بازپرداخت نمایش داده نمیشود. سیاست بازپرداخت در سطح <PackageData> سیاست بازپرداخت در سطح <Result> را لغو میکند. سیاست بازپرداخت در سطح <Rates> سیاست بازپرداخت در سطح <PackageData> را لغو میکند. قیمتگذاری قابل استرداد همچنین میتواند از طریق گزینههای جایگزین و بدون تغییر مستقیم طرح پیام تراکنش شما، برای کاربران برجسته شود. درباره این گزینهها بیشتر بدانید. سیاست نرخهای قابل استرداد . مثال زیر عنصر <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> توجه: توصیه میکنیم همه ویژگیها را تنظیم کنید. وقتی یک یا چند ویژگی تنظیم نشده باشند، یک پیام هشدار وضعیت فید ایجاد میشود. اگر هیچ ویژگیای تنظیم نکنید، نرخ به عنوان قابل استرداد نمایش داده نمیشود. ویژگیها عبارتند از:
هنگام تنظیم ویژگیها، به نکات زیر توجه کنید:
|
| <MembershipBenefits Included> | Optional | boolean | این نرخ شامل مزایای اقامت ویژه برای مدت اقامت است. پارامترهای زیر را شامل میشود:
|
| <CarRentalIncluded> | Optional | boolean | این نرخ شامل اجاره رایگان خودرو در طول مدت اقامت میشود. |
| <MilesIncluded> | Optional | boolean | این نرخ شامل مایلهای مسافران دائمی نیز میشود. پارامترها عبارتند از:
توجه: |
| <OnPropertyCredit> | Optional | boolean | این نرخ شامل اعتبار داخل ملک (غذا و نوشیدنی، اقامتگاه، اسپا و غیره) میشود. پارامتر:
|
| <AirportTransportationIncluded> | Optional | Object | نرخ شامل حمل و نقل رایگان به/از فرودگاه نزدیک میشود. ویژگی اختیاری direction جهت حمل و نقل را مشخص میکند. مقادیر معتبر عبارتند از:from : سرویس حمل و نقل از فرودگاه به ملک ارائه میشود. در صورت عدم تعیین جهت، این مقدار پیشفرض است. to : سرویس حمل و نقل از ملک به فرودگاه ارائه میشود. round_trip : سرویس حمل و نقل هم به فرودگاه و هم از فرودگاه ارائه میشود. |
مثالها
بسته اتاق یک تخته
مثال زیر یک اتاق یک تخته با ظرفیت ۲ نفر (یک بزرگسال و یک کودک) و شامل صبحانه را تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Two certificates for continental
breakfast will be provided." language="en"/>
<Text text="Deux certificats pour le petit déjeuner
continental seront fournis." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
فراداده اتاق و بسته
مثال زیر، متادیتای اتاق و بسته را تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>180054</Property>
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Bed Room" language="en"/>
<Text text="Chambre single" language="fr"/>
</Name>
<Description>
<Text text="Non-smoking" language="en"/>
<Text text="Pas de fumiers" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>P54321</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
<Text text="Avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Includes a delightful array of jams and jellies." language="en"/>
<Text text="Comprend une délicieuse gamme de confitures et gelées." language="fr"/>
</Description>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
بستههای چند اتاقه
مثال زیر، متادیتای اتاق و بسته را برای چندین بسته اتاق تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<!-- A transaction message with room types result. -->
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
<RoomID>single</RoomID>
<Name>
<Text text="Single room" language="en"/>
<Text text="Chambre simple" language="fr"/>
</Name>
<Description>
<Text text="A single room" language="en"/>
<Text text="Le chambre simple" language="fr"/>
</Description>
<PhotoURL>
<Caption>
<Text text="Living area" language="en"/>
<Text text="Le chambre" language="fr"/>
</Caption>
<URL>http://www.foo.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image1235.jpg</URL>
</PhotoURL>
<Capacity>2</Capacity>
</RoomData>
<RoomData>
<RoomID>double</RoomID>
<Name>
<Text text="Double room" language="en"/>
<Text text="Chambre double" language="fr"/>
</Name>
<Occupancy>1</Occupancy>
</RoomData>
<PackageData>
<PackageID>refundbreakfast</PackageID>
<Name>
<Text text="Refundable Room with Breakfast" language="en"/>
<Text text="Chambre remboursable avec le petit déjeuner" language="fr"/>
</Name>
<Description>
<Text text="Continental Breakfast" language="en"/>
<Text text="Petit déjeuner continental" language="fr"/>
</Description>
<ChargeCurrency>hotel</ChargeCurrency>
<Refundable available="1" refundable_until_days="3"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>prepaid</PackageID>
<Name>
<Text text="Nonrefundable" language="en"/>
<Text text="Non remboursable" language="fr"/>
</Name>
<Description>
<Text text="Blah blah blad" language="en"/>
<Text text="Le blah blah blad" language="fr"/>
</Description>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="0"/>
</PackageData>
</PropertyDataSet>
</Transaction>
بسته اتاق با نرخها
مثال زیر، متادیتای اتاق و بسته را برای یک بسته اتاق با ویژگیهای نرخ تعریف میکند:
<Transaction timestamp="2010-04-24T20:44:56-04:00" id="TXNID">
<PropertyDataSet>
<Property>12345</Property>
<RoomData>
...
</RoomData>
<!-- definitions of PackageData types including rate features -->
<PackageData>
<PackageID>room_with_addl_benefits</PackageID>
<Name>
<Text text="Acme Hotels 2017 Promotion Package" language="en"/>
</Name>
<ChargeCurrency>hotel</ChargeCurrency>
<BreakfastIncluded>1</BreakfastIncluded>
<MembershipBenefitsIncluded>
<ProgramName>
<Text language="en" text="Marriott Rewards"/>
</ProgramName>
<ProgramLevel>
<Text language="en" text="Platinum"/>
</ProgramLevel>
</MembershipBenefitsIncluded>
<OnPropertyCredit>
<Amount currency="USD">123.45</Amount>
</OnPropertyCredit>
</PackageData>
<PackageData>
<PackageID>room_with_miles</PackageID>
<Name>
<Text text="Room with Bundled Miles" language="en"/>
</Name>
<ChargeCurrency>hotel</ChargeCurrency>
<MilesIncluded>
<NumberOfMiles>1000</NumberOfMiles>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</MilesIncluded>
<AirportTransportationIncluded direction="from"/>
</PackageData>
</PropertyDataSet>
<!-- The actual list of prices -->
<Result>
…
</Result>
</Transaction>
وعدههای غذایی و عکسها
مثال زیر، متادیتای اتاق و بسته را برای وعدههای غذایی، عکسها و زمان ورود و خروج تعریف میکند:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Meals Included" language="en"/>
</Name>
<PhotoURL>
<Caption>
<Text text="Breakfast" language="en"/>
<Text text="朝食" language="ja"/>
</Caption>
<URL>http://example.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Meals>
<!-- Guests can choose to have breakfast in their room or in another
space to avoid contact with other guests. -->
<Breakfast included="1" in_room="1" in_private_space="1"/>
<Dinner included="1" buffet="1"/>
</Meals>
<CheckinTime>15:00</CheckinTime>
<CheckoutTime>11:00</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
صبحانه
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<PropertyDataSet>
<Property>1234</Property>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Breakfast Included" language="en"/>
</Name>
<PhotoURL>
<Caption>
<Text text="Breakfast" language="en"/>
<Text text="朝食" language="ja"/>
</Caption>
<URL>http://example.com/static/bar/image1234.jpg</URL>
</PhotoURL>
<Meals>
<Breakfast included="true"/>
<!-- Dinner not included needs to be explicitly specified -->
<Dinner included="false"/>
</Meals>
<CheckinTime>15:00</CheckinTime>
<CheckoutTime>11:00</CheckoutTime>
</PackageData>
</PropertyDataSet>
</Transaction>
<Result>
یک ظرف برای بهروزرسانیهای قیمتگذاری و موجودی در یک پیام <Transaction> .
عنصر <Result> در سلسله مراتب XML پیام تراکنش در مکان زیر ظاهر میشود:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
<Result> برای تنظیم یا بهروزرسانی قیمت اتاقها و تعریف موجودی موجود استفاده کنید. اقلام تعریفشده در این عنصر معمولاً به فرادادههای مستقل از برنامه سفر در مورد یک اتاق یا بسته (مانند توضیحات یا مجموعهای از امکانات) که در <PackageData> و <RoomData> تعریف شدهاند، ارجاع میدهند.
شما معمولاً پیامهای تراکنشی حاوی بهروزرسانیهای قیمت را مرتباً ارسال میکنید. اینکه دقیقاً چگونه و با چه فاصله زمانی این کار را انجام میدهید، به روش ارسال شما بستگی دارد.
شما میتوانید <Result> در یک پیام تراکنش برای حذف برنامههای سفر استفاده کنید، همانطور که در حذف موجودی توضیح داده شده است. برای اطلاعات بیشتر در مورد استفاده از پیامهای تراکنش برای بهروزرسانی قیمتها و موجودی، به بخش افزودن و بهروزرسانی موجودی مراجعه کنید .
یک پیام تراکنش میتواند شامل هر تعداد عنصر <Result> باشد، مادامی که اندازه پیام از ۱۰۰ مگابایت تجاوز نکند.
نحو
عنصر <Result> از سینتکس زیر استفاده میکند:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> <!-- Required --> <Property>hotel_ID</Property> <!-- Required --> <Checkin>YYYY-MM-DD</Checkin> <!-- Required --> <Nights>number_of_nights</Nights> <Baserate currency="currency_code">price</Baserate> <!-- Only required when <Baserate> contains a real price --> <Tax currency="currency_code">tax_amount</Tax> <!-- Only required when <Baserate> contains a real price --> <OtherFees currency="currency_code">fee_amount</OtherFees> <Refundable available="[false|true]" refundable_until_days="number_of_days" refundable_until_time="time"/> <RoomID>room_ID</RoomID> <PackageID>package_ID</PackageID> <ExpirationTime>expiration_time</ExpirationTime> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <Occupancy>max_number_of_intended_occupants</Occupancy> <!-- For Baserate, occupancy value must be greater than or equal to 2. If a value is not provided for occupancy, it defaults to 2. --> <!-- Child occupancy rates should only be sent through Live pricing with context and not through Pull or Changed pricing --> <OccupancyDetails>occupancy_info</OccupancyDetails> <Rates>...</Rates> <RoomBundle>...</RoomBundle> <AllowablePointsOfSale> <PointOfSale id="landing_page_identifier"/> ... </AllowablePointsOfSale> <MilesIncluded> <NumberOfMiles>integer</NumberOfMiles> <Provider> <Text language="en" text="provider-name"> </Provider> <!-- Add Loyalty point information --> <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID> </MilesIncluded> </Result> ... </Transaction>
ویژگیها
عنصر <Result> دارای ویژگیهای زیر است:
| ویژگی | الزامی است؟ | نوع | توضیحات |
|---|---|---|---|
| mergeable | Optional | boolean | به طور پیشفرض، قیمتهای جدید برای یک جفت هتل و برنامه سفر خاص، روی هر قیمت قبلی (منقضی نشده) موجود در حافظه پنهان گوگل بازنویسی میشوند. ویژگی قابل ادغام به شما امکان میدهد قیمتهای اضافی را بدون حذف اطلاعات قیمتگذاری قبلی در حافظه پنهان گوگل ذخیره کنید. پاسخهای «پرسش قیمتگذاری زنده با متن» همیشه این ویژگی را روی true تنظیم میکنند (صرف نظر از پاسخ پیام تراکنش شما). |
عناصر فرزند
عنصر <Result> دارای عناصر فرزند زیر است:
| عنصر فرزند | الزامی است؟ | نوع | توضیحات |
|---|---|---|---|
| <AllowablePointsOfSale> | Optional | Object | یک یا چند صفحه فرود که واجد شرایط هتل باشند. یک صفحه فرود، وبسایتی است که میتواند فرآیند رزرو را برای کاربر نهایی انجام دهد. برای اینکه صفحه فرود خاصی را به طور صریح شامل شود (و بقیه را حذف کند)، یک یا چند عنصر <AllowablePointsOfSale> را که با ویژگی id عنصر <PointOfSale> در فایل صفحات فرود مطابقت دارند، اضافه کنید.اگر این عنصر را وارد نکنید، تمام صفحات فرود تعریف شده در فایل صفحات فرود، واجد شرایط استفاده برای رزرو اتاق در نظر گرفته میشوند. برای اطلاعات بیشتر، به نحو فایل صفحات فرود مراجعه کنید. |
| <Baserate> | Optional | float | قیمت اتاق برای اقامت. ارزش این عنصر باید موارد زیر را منعکس کند:
وقتی اتاق برای برنامه سفر در دسترس نباشد، برای حذف یک بسته اتاق، از دستورالعملهای موجود در بخش «حذف بسته اتاق» استفاده کنید. <Baserate currency="USD">1200.40</Baserate> عنصر
|
| <ChargeCurrency> | Optional | enum | چه زمانی و کجا کاربر هزینه رزرو را پرداخت میکند. این عنصر میتواند در یک پیام تراکنش در عنصر <Result> برای قیمت هتل یا بلوک <PackageData> برای بسته اتاق استفاده شود.مقادیر معتبر عبارتند از:
مقدار پیشفرض |
| <Checkin> | Required | Date | تاریخ ورود برای یک برنامه سفر با استفاده از قالب تاریخ . ترکیب عنصر <Nights> و عنصر <Checkin> یک برنامه سفر را تشکیل میدهد. |
| Optional | string | منسوخشده: یک فیلد سفارشی تعریف میکند که میتوانید از آن برای ارسال دادههای اضافی مرتبط با یک هتل استفاده کنید. میتوانید تا پنج مقدار سفارشی با نامهای عنصر زیر ارسال کنید:
عناصر مهم: اگر میخواهید از متغیرهای | |
| <ExpirationTime> | Optional | DateTime | تاریخ و زمانی که قیمت منقضی شده در نظر گرفته میشود (حداقل ۳ ساعت). توصیه میکنیم اگر برای ساختار قیمتگذاری شما حیاتی نیست، مهرهای زمانی انقضا را ارائه ندهید. گوگل هیچ قیمتی را که منقضی شده باشد، ارائه نمیدهد و هر برنامه سفری که قیمت آن منقضی شده باشد، واجد شرایط استعلام قیمت زنده خواهد بود. |
| <MilesIncluded> | Optional | boolean | این نرخ شامل مایلهای مسافران دائمی نیز میشود. پارامترها عبارتند از:
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_until_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:
|
مثالها
Multi-property example
The following example defines one itinerary and its pricing for two properties:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">278.33</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="site1"/>
</AllowablePointsOfSale>
</Result>
<Result>
<Property>052213</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">299.98</Baserate>
<Tax currency="USD">26.42</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="otto"/>
<PointOfSale id="simon"/>
</AllowablePointsOfSale>
<MilesIncluded>
<NumberOfMiles>1200</NumberOfMiles>
<Provider>
<Text language="en" text="United Airlines"/>
</Provider>
<LoyaltyCampaignID>my_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" encoding="UTF-8"?>
<Transaction timestamp="2020-07-23T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2021-01-13</Checkin>
<Nights>9</Nights>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>2</Occupancy>
<Rates>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>1</Occupancy>
</Rate>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>3</Occupancy>
</Rate>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>4</Occupancy>
</Rate>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>5</Occupancy>
</Rate>
<Rate>
<Baserate currency="USD">3196.1</Baserate>
<Tax currency="USD">559.49</Tax>
<OtherFees currency="USD">543.34</OtherFees>
<Occupancy>6</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" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Unavailable>
<NotFetched/>
</Unavailable>
</Result>
<Result>
<Property>073313</Property>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Unavailable>
<NoVacancy/>
<MinNightStay value=3/>
</Unavailable>
</Result>
<Result>
<Property>052213</Property>
<Checkin>2018-06-10</Checkin>
<Nights>10</Nights>
<Unavailable>
<PropertyClosed first_open="2018-06-15" first_closed="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.
نحو
The <Rates> element uses the following syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> <Rates> <Rate rate_rule_id="rate_rule_id"> <Baserate currency="currency_code">price</Baserate> <Tax currency="currency_code">tax_amount</Tax> <OtherFees currency="currency_code">fee_amount</OtherFees> <ExpirationTime>expiration_time</ExpirationTime> <Refundable available="[false|true]" refundable_until_days="number_of_days" refundable_until_time="time"/> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <AllowablePointsOfSale> <PointOfSale id="landing_page_identifier"/> </AllowablePointsOfSale> <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults or children --></OccupancyDetails> ... <MilesIncluded> <NumberOfMiles>integer</NumberOfMiles> <Provider> <Text language="en" text="provider-name"> </Provider> <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID> </MilesIncluded> ... </Rate> ... </Rates> </Result> ... </Transaction>
ویژگیها
The <Rates> element has the following attributes:
| ویژگی | Required? | توضیحات |
|---|---|---|
| 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:
| عنصر فرزند | Required? | نوع | توضیحات |
|---|---|---|---|
| <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_until_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> . |
مثالها
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-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">200.00</Baserate>
<Tax currency="USD">20.00</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<Rates>
<!-- The rate_rule_id is required when using conditional rates -->
<Rate rate_rule_id="mobile">
<!-- Override base rate and taxes for conditional rates -->
<Baserate currency="USD">180.00</Baserate>
<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-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</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 bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="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
performance. For details, see Using Variables and Conditions. -->
<RatePlanID>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">258.33</Baserate>
<Tax currency="USD">25.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<!-- The value below overrides ChargeCurrency from roombundle. -->
<ChargeCurrency>hotel</ChargeCurrency>
</Rate>
<Rate rate_rule_id="us_or_gb">
<Baserate currency="USD">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 .
نحو
The <RoomBundle> element uses the following syntax:
<?xml version="1.0" encoding="UTF-8"?> <Transaction ... > <Result> ... <RoomBundle> <!-- Required unless specified inline under<RoomData>--> <RoomID>room_ID</RoomID> <!-- Required<PackageData>--> <PackageID>package_ID</PackageID> <!-- Add Loyalty point information --> <MilesIncluded> <NumberOfMiles>integer</NumberOfMiles> <Provider> <Text language="en" text="provider-name"> </Provider> <LoyaltyCampaignID>campaign_ID</LoyaltyCampaignID>> </MilesIncluded> <!-- Required --> <Baserate currency="currency_code">price</Baserate> <!-- Required --> <Tax currency="currency_code">taxes</Tax> <!-- Required --> <OtherFees currency="currency_code">other_fees</OtherFees> <Refundable available="[false|true]" refundable_until_days="number_of_days" refundable_until_time="time"/> <!-- Required --> <ChargeCurrency>[deposit|hotel|installments|web]</ChargeCurrency> <Occupancy>max_number_of_intended_occupants</Occupancy> <OccupancyDetails> <!-- optional info about the types of guests, whether adults or children --></OccupancyDetails> <BreakfastIncluded>boolean_value</BreakfastIncluded> <InternetIncluded>boolean_value</InternetIncluded> <ParkingIncluded>boolean_value</ParkingIncluded> <RatePlanID>rate_plan_ID</RatePlanID> <Rates>...</Rates> </RoomBundle> ... </Result> </Transaction>
ویژگیها
The <RoomBundle> element has no attributes.
Child elements
The <RoomBundle> element has the following child elements:
| عنصر فرزند | Required? | نوع | توضیحات |
|---|---|---|---|
| <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_until_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. |
مثالها
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="12345678">
<!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
<!-- 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 predefined frequency). -->
<PropertyDataSet>
<Property>180054</Property>
<!-- Can be reused by multiple Room Bundles -->
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Queen Room - Non-Smoking" language="en"/>
<Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<!-- Room can accommodate up to 4, but package data specifies occupancy
between 1 to 4 -->
<Capacity>4</Capacity>
</RoomData>
<RoomData>
<RoomID>436233</RoomID>
<Name>
<Text text="Premium King Room - Non-Smoking" language="en"/>
<Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<Capacity>4</Capacity>
</RoomData>
<!-- Can be reused by multiple Room Bundles -->
<PackageData>
<PackageID>P11111</PackageID>
<Occupancy>1</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P54321</PackageID>
<Occupancy>2</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P12345</PackageID>
<Occupancy>4</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="1"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
</PropertyDataSet>
<!-- Efficient method of defining Room Bundles -->
<!-- Part 2: Reference RoomData and PackageData through ID -->
<Result>
<!-- Single occupancy pricing will be specified in a room bundle below -->
<Property>180054</Property>
<Checkin>2017-10-07</Checkin>
<Nights>2</Nights>
<!-- Base Room Bundle -->
<RoomBundle>
<RoomID>060773</RoomID>
<PackageID>P54321</PackageID>
<Baserate currency="USD">199.99</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RatePlanID>060773-P54321</RatePlanID>
</RoomBundle>
<RoomBundle>
<RoomID>060773</RoomID>
<PackageID>P11111</PackageID>
<!-- Price for 1 ("occupancy") is the lowest price and will be
displayed -->
<Baserate currency="USD">174.99</Baserate>
<Tax currency="USD">22.08</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RatePlanID>060773-P11111</RatePlanID>
</RoomBundle>
<!-- Premium Room Bundle -->
<RoomBundle>
<RoomID>436233</RoomID>
<PackageID>P12345</PackageID>
<!-- Price for 4 ("occupancy"), any eligible room bundle with 1 or more
occupancy will be displayed-->
<Baserate currency="USD">298.88</Baserate>
<Tax currency="USD">42.12</Tax>
<OtherFees currency="USD">10.00</OtherFees>
<RatePlanID>436233-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="12345678">
<!-- Efficient method of defining Room Bundles-->
<!-- Part1: Define RoomData and PackageData in PropertyDataSet -->
<PropertyDataSet>
<Property>180054</Property>
<!-- Can be reused by multiple Room Bundles -->
<RoomData>
<RoomID>060773</RoomID>
<Name>
<Text text="Single Queen Room - Non-Smoking" language="en"/>
<Text text="Chambre de la Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<!-- Room can accommodate up to 4, but package data specifies occupancy
between 1 to 4 -->
<Capacity>4</Capacity>
</RoomData>
<RoomData>
<RoomID>436233</RoomID>
<Name>
<Text text="Premium King Room - Non-Smoking" language="en"/>
<Text text="Chambre de le Roi Premium - Pas de Fumeurs" language="fr"/>
</Name>
<Capacity>4</Capacity>
</RoomData>
<!-- Can be reused by multiple Room Bundles -->
<PackageData>
<PackageID>P33333</PackageID>
<Occupancy>3</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="7"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
<PackageData>
<PackageID>P12345</PackageID>
<Occupancy>4</Occupancy>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="1" refundable_until_days="1"
refundable_until_time="18:00:00"/>
<ParkingIncluded>1</ParkingIncluded>
<InternetIncluded>1</InternetIncluded>
</PackageData>
</PropertyDataSet>
<Result>
<Property>180054</Property>
<Checkin>2017-10-07</Checkin>
<Nights>2</Nights>
<!-- Efficient method of defining Room Bundles -->
<!-- Part 2: Reference RoomData and PackageData through ID -->
<!-- Base Room Bundle -->
<RoomBundle>
<!-- Baserate above and attributes must match atleast one room bundle
below -->
<RoomID>060773</RoomID>
<PackageID>P33333</PackageID>
<Baserate currency="USD">499.99</Baserate>
<Tax currency="USD">55.12</Tax>
<OtherFees currency="USD">22.00</OtherFees>
</RoomBundle>
<!-- Premium Room Bundle -->
<RoomBundle>
<RoomID>436233</RoomID>
<PackageID>P12345</PackageID>
<!-- Lowest price for 3 ("occupancy"), shown below, will be displayed -->
<Baserate currency="USD">598.88</Baserate>
<Tax currency="USD">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" encoding="UTF-8"?>
<Transaction ... >
<Result>
...
<!-- Suite Room Bundle -->
<RoomBundle>
<RoomID>suite1</RoomID>
<PackageID>standard</PackageID>
<Occupancy>2</Occupancy>
<!-- Price for room -->
<Baserate currency="USD">80.00</Baserate>
<Tax currency="USD">5.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomData>
<Name>
<Text text="Suite for 2" language="en"/>
</Name>
</RoomData>
</RoomBundle>
<!-- Small Dorm Room Bundle -->
<RoomBundle>
<RoomID>small_dorm</RoomID>
<PackageID>economy</PackageID>
<Occupancy>1</Occupancy>
<!-- Price per bed -->
<Baserate currency="USD">35.00</Baserate>
<Tax currency="USD">3.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomData>
<Name>
<Text text="1 bed in small dorm" language="en"/>
</Name>
</RoomData>
</RoomBundle>
<!-- Large Dorm Room Bundle -->
<RoomBundle>
<RoomID>large_dorm</RoomID>
<PackageID>economy</PackageID>
<Occupancy>1</Occupancy>
<!-- Price per bed -->
<Baserate currency="USD">20.00</Baserate>
<Tax currency="USD">2.50</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<RoomData>
<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-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2023-04-10</Checkin>
<Nights>2</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 bundle in subsequent transaction
messages. -->
<RoomBundle>
...
<!-- RoomID is required, PackageID is recommended. -->
<RoomID>5</RoomID>
<PackageID>ABC</PackageID>
<!-- Baserate is required. -->
<Baserate currency="USD">275.00</Baserate>
<Tax currency="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
performance. For details, see Using Variables and Conditions. -->
<RatePlanID>5-ABC</RatePlanID>
<!-- Occupancy is mandatory for RoomBundle elements. -->
<!-- Elements below will get inherited to nested rate elements. -->
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
</OccupancyDetails>
<InternetIncluded>1</InternetIncluded>
<!-- Rate rule "mobile" overrides chargeCurrency, "us_or_gb" doesn't. -->
<ChargeCurrency>web</ChargeCurrency>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">258.33</Baserate>
<Tax currency="USD">25.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<!-- The value below overrides ChargeCurrency from roombundle. -->
<ChargeCurrency>hotel</ChargeCurrency>
</Rate>
<Rate rate_rule_id="us_or_gb">
<Baserate currency="USD">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>
یا،
- Duplicate
<OccupancyDetails>: In this case, send additional identical<OccupancyDetails>in both the<RoomBundle>and the nested<Rate>element
نحو
When <OccupancyDetails> appears, it is always preceded by <Occupancy> . Note the following syntax:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction ... >
<Result>
...
<Occupancy>max_number_of_intended_occupants</Occupancy>
<OccupancyDetails>
<NumAdults>number_of_adults</NumAdults>
<Children>
<Child age=age_of_one_child_guest/>
<Child age=age_of_one_child_guest/>
</Children>
</OccupancyDetails>
</Result>
</Transaction>Child elements
The <OccupancyDetails> element has the following child elements:
| عنصر فرزند | Required? | نوع | توضیحات |
|---|---|---|---|
| <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"> . |
مثالها
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" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>060773</Property>
<RoomID>RoomType101</RoomID>
<PackageID>Package101</PackageID>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">278.33</Baserate>
<Tax currency="USD">25.12</Tax>
<OtherFees currency="USD">2.00</OtherFees>
<AllowablePointsOfSale>
<PointOfSale id="site1"/>
</AllowablePointsOfSale>
<Occupancy>3</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<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" standalone="yes"?>
<Transaction id="Wtdj8QoQIWcAAbaTGlIAAAC4" timestamp="2018-04-18T11:27:45-04:00">
<Result>
<Property>8251</Property>
<Checkin>2018-06-20</Checkin>
<Nights>1</Nights>
<Baserate currency="USD">62.18</Baserate>
<Tax currency="USD">2.45</Tax>
<OtherFees currency="USD">0.00</OtherFees>
<Rates>
<Rate rate_rule_id="rule-951">
<Occupancy>2</Occupancy>
<OccupancyDetails>
<NumAdults>1</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<Baserate currency="USD">42.61</Baserate>
<Tax currency="USD">5.70</Tax>
<OtherFees currency="USD">0.00</OtherFees>
<AllowablePointsOfSale>
<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" encoding="UTF-8"?>
<Transaction timestamp="2017-07-23T16:20:00-04:00" id="42">
<Result>
<Property>6781291</Property>
<Checkin>2017-08-05</Checkin>
<Nights>2</Nights>
...
<RoomBundle>
<RoomID>10291</RoomID>
<RatePlanID>564739</RatePlanID>
<PackageID>564739</PackageID>
<Occupancy>3</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="17"/>
</Children>
</OccupancyDetails>
<ChargeCurrency>web</ChargeCurrency>
<Refundable available="true" refundable_until_days="1" refundable_until_time="23:59:00" />
<Baserate currency="USD">185.34</Baserate>
<Tax currency="USD">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" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
<Result>
<Property>1234</Property>
<Checkin>2018-06-10</Checkin>
<Nights>2</Nights>
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">0</OtherFees>
<RoomBundle>
<RoomID>5</RoomID>
<PackageID>STD</PackageID>
<Baserate currency="USD">275.00</Baserate>
<Tax currency="USD">27.50</Tax>
<OtherFees currency="USD">0</OtherFees>
<InternetIncluded>1</InternetIncluded>
<ChargeCurrency>web</ChargeCurrency>
<Occupancy>4</Occupancy>
<OccupancyDetails>
<NumAdults>2</NumAdults>
<Children>
<Child age="17"/>
<Child age="17"/>
</Children>
</OccupancyDetails>
<Rates>
<Rate rate_rule_id="mobile">
<Baserate currency="USD">258.33</Baserate>
<Tax currency="USD">25.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
<ChargeCurrency>hotel</ChargeCurrency>
</Rate>
<Rate rate_rule_id="us_or_gb">
<Baserate currency="USD">268.33</Baserate>
<Tax currency="USD">26.83</Tax>
<OtherFees currency="USD">1.00</OtherFees>
</Rate>
</Rates>
</RoomBundle>
</Result>
</Transaction>