На этой странице приведена справочная информация о сообщениях-транзакциях на основе XML.
<Transaction>
Корневым элементом сообщения-транзакции является <Transaction>. Это контейнер для описательной информации о номерах и пакетах, а также о ценах и доступности номеров и пакетов.
Элемент <Transaction> находится в следующем месте иерархии XML-файла сообщения-транзакции:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Сообщения, в которых в качестве корневого элемента используется <Transaction>, должны содержать хотя бы один дочерний элемент. Сообщения-транзакции могут содержать любое количество дочерних элементов, если общий размер сообщения не превышает 100 МБ.
Синтаксис
Элемент <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 | string | Уникальный идентификатор каждого сообщения-транзакции. |
| partner | Optional | string | Аккаунт партнера, для которого предназначено сообщение-транзакция. Обычно это требуется, если ваш бэкенд предоставляет фиды с ценами для нескольких партнерских аккаунтов. Это строковое значение, которое представляет собой ключ партнера, указанный на странице настроек аккаунта в Hotel Center. |
| timestamp | Required | DateTime | Время отправки сообщения-транзакции. Будут обработаны любые сообщения с временной меткой, отправленные в течение последних 24 часов, а те, что не были отправлены, будут отброшены. Сообщения обрабатываются в порядке |
Дочерние элементы
Элемент <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>
Цены за ночь
В примере ниже указаны цены на проживание от 1 до 7 ночей начиная с 7 июня 2023 года.
<?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>. Значения, заданные для гостиницы, переопределяют значения, заданные для партнера.
Google сохраняет эту информацию, чтобы вам не приходилось указывать ее каждый раз при обновлении цен.
Элемент <PropertyDataSet> находится в следующем месте иерархии XML-файла сообщения-транзакции:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Подробную информацию можно найти в статье Метаданные пакета Room Bundle.
Синтаксис
Элемент <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> нет атрибутов.
Дочерние элементы
Элемент <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>
Когда вы отправляете цены и информацию о наличии мест для этого номера и пакета, вы указываете в сообщениях о ценах идентификаторы номера и пакета. В результате вы значительно уменьшите размер сообщений и количество ошибок, которые могут возникнуть из-за дублирования данных. Подробную информацию можно найти в разделе Метаданные Room Bundle.
<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>. Когда Google показывает этот номер или пакет в результатах поиска, он включает описания обоих, разделенные дефисом.
Подробную информацию можно найти в статье Метаданные пакета Room Bundle.
Синтаксис
Элемент <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> нет атрибутов.
Дочерние элементы
Элемент <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 | Максимальное количество гостей, на которое рассчитан номер.
Например, в большом люксе могут разместиться 6 гостей (вместимость – 6), но он предназначен только для 4 гостей.
Значение должно быть меньше или равно значению элемента Значение Вместе с |
| <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> нет атрибутов.
Дочерние элементы
Элемент <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 | Укажите этот элемент, если номер представляет собой место для ночлега на открытом воздухе, где нет стен, водопровода и климат-контроля. Например, гостиничные номера не относятся к этой категории, а кемпинги, где гости живут в палатках, и стоянки для автодомов – относятся. |
| <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>. Когда Google показывает этот номер или пакет в результатах поиска, он включает описания обоих, разделенные дефисом.
Если вы обновляете один элемент <PackageData> для ресурса, то должны обновить все элементы <PackageData> и <RoomData> для этого ресурса.
Каждый объект <PropertyDataSet> считается полным набором данных о ресурсе и перезаписывает все существующие данные.
Подробную информацию можно найти в статье Метаданные пакета Room Bundle.
Синтаксис
Элемент <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> нет атрибутов.
Дочерние элементы
Элемент <PackageData> содержит следующие дочерние элементы:
| Дочерний элемент | Обязательно? | Тип | Описание |
|---|---|---|---|
| <BreakfastIncluded> | Optional | boolean | Указывает, включен ли завтрак в стоимость пакета.
Допустимые значения: 0 (или false) и 1 (или true).
Рекомендуем использовать |
| <ChargeCurrency> | Optional | enum | Когда и где пользователь оплачивает бронирование. Этот элемент использует тот же синтаксис, что и <ChargeCurrency> в <Result>.
Значение по умолчанию: |
| <CheckinTime> | Optional | Time | Самое раннее время заезда. Время должно быть меньше 24:00 по местному времени гостиницы. |
| <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 | Максимальное количество гостей, на которое рассчитан пакет номеров.
Например, в большом люксе могут разместиться шесть гостей, но он предназначен только для четырех.
Значение должно быть меньше или равно значению элемента Значение Если вы укажете этот элемент и в Примечания Вместе с<Occupancy> может использоваться <OccupancyDetails>,указывающий тип гостей (взрослые или дети). Синтаксис и описание дочерних элементов приведены в разделе <OccupancyDetails>.
|
| <PackageID> | Required | string | Уникальный идентификатор пакета. Используйте этот идентификатор, чтобы сопоставить данные о пакете номеров с блоками (Этот идентификатор также можно использовать для ссылки на общее определение пакета услуг, используемое в одном сообщении-транзакции при определении данных пакета услуг в строке.) |
| <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 |
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>, если его размер не превышает 100 МБ.
Синтаксис
Элемент <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 | По умолчанию новые цены для определенной пары "гостиница – программа пребывания" перезаписывают все предыдущие (неистекшие) цены, хранящиеся в кеше Google. Атрибут mergeable позволяет сохранять в кеше Google дополнительные цены, не удаляя предыдущие. В ответах на запросы цен в режиме реального времени с контекстом этот атрибут всегда будет иметь значение 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 | Дата заезда для маршрута в формате Date. Сочетание элементов <Nights> и <Checkin> составляет маршрут. |
| Optional | string | Устарело. Определяет специальное поле, которое можно использовать для передачи дополнительных данных, связанных с гостиницей. Вы можете передавать до пяти собственных значений со следующими названиями элементов:
Элементы |
|
| <ExpirationTime> | Optional | DateTime | Дата и время, когда цена перестает действовать (не менее чем через три часа).
Если это не критично для вашей структуры ценообразования, рекомендуем не указывать временные метки окончания срока действия. Google не показывает цены с истекшим сроком действия. Для маршрутов с такими ценами могут выполняться запросы цен в режиме реального времени. |
| <MilesIncluded> | Optional | boolean | В стоимость включены мили для часто летающих пассажиров. Параметры:
Примечание. Поля |
| <Nights> | Required | integer | Количество ночей в маршруте. Значение элемента <Nights> должно быть положительным целым числом.
Сочетание <Nights> и <Checkin> составляет маршрут. |
| <OtherFees> | Optional | float | Сборы, помимо базовой цены и налогов, которые влияют на итоговую стоимость номера. Элемент <OtherFees> принимает один обязательный атрибут currency, который определяет трехбуквенный код валюты для комиссий. Пример: USD.
Элемент |
| <Occupancy> | Optional | integer | Указывает максимальное количество гостей, для которых действует эта цена.
Если свойство <Occupancy> указано непосредственно в свойстве <Result>, то его значение должно быть не меньше 2. Вместе с <Occupancy> может использоваться <OccupancyDetails>, указывающий тип гостей (взрослые или дети). Если тип гостей не указан, предполагается, что это взрослые. Синтаксис и описание дочерних элементов приведены в <OccupancyDetails>. Если элемент <Occupancy> не указан, по умолчанию используется значение 2.
Важно! Цены для гостей с детьми следует передавать только через цены в режиме реального времени с контекстом, а не через запросы или измененные цены. Примечание. Чтобы включить функцию отправки цен, не рассчитанных на двухместное размещение, обратитесь в службу поддержки. |
| <PackageID> | Optional | string | Уникальный идентификатор пакета, позволяющий сопоставить его с данными стандартного пакета.
Также используется для заполнения переменной целевой страницы PACKAGE-ID.
Подробную информацию можно найти в разделе Метаданные пакета Room Bundle.
В элементе |
| <Property> | Required | string | Идентификатор гостиницы, на которую влияют связанные данные (цена, маршрут, пакет номеров или метаданные). Значение этого элемента должно быть строкой. Значение этого элемента должно совпадать со значением элемента <id>, которое вы указали в фиде со списком отелей.
|
| <Rates> | Optional | <Rates> |
Контейнер для одного или нескольких блоков <Rate>. Каждый элемент <Rate> в элементе <Rates> определяет отдельную цену для комбинации номера и маршрута.
Элемент Примечание. В |
| <Refundable> | Optional | Object | Позволяет указать, что тариф предусматривает полный возврат средств или бесплатную отмену бронирования. Если вы не укажете эту информацию, она не будет показываться.
Правила возврата платежей на уровне <PackageData> переопределяют правила на уровне <Result>. Правила возврата платежей на уровне <Rates> переопределяют правила на уровне <PackageData>. Вы также можете выделить цены с возможностью возврата средств, не изменяя схему сообщения-транзакции. Подробнее о правилах в отношении цен с возможностью возврата…
В примере ниже показан элемент <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Примечание. Рекомендуем задать все атрибуты. Если не задан один или несколько атрибутов, генерируется предупреждение о статусе фида. Если вы не укажете ни один из атрибутов, тариф не будет показываться как возвратный. Вот эти атрибуты:
При настройке атрибутов обратите внимание на следующее:
|
| <RoomBundle> | Optional | <RoomBundle> |
Контейнер для информации о физических характеристиках номера, включенных в цену, пакетах удобств и некоторых условиях покупки для указанной гостиницы и маршрута.
В общем случае используйте этот элемент, чтобы определить цены для базового номера и разных типов номеров в одном объекте размещения. Хотя описания пакетов номеров можно задавать непосредственно в сообщении, мы рекомендуем использовать для этого отдельное сообщение-транзакцию. Google сохранит метаданные, чтобы вы могли ссылаться на них, а не повторять их при всех будущих обновлениях цен. |
| <RoomID> | Optional | string | Уникальный идентификатор комнаты, который сопоставляет ее с предварительно заданными данными. Также используется для заполнения переменной целевой страницы PARTNER-ROOM-ID.
Подробную информацию можно найти в разделе Метаданные пакета Room Bundle.
В элементе |
| <Tax> | Optional | float | Налоги, которые учитываются при расчете итоговой цены номера.
Элемент <Tax> принимает один обязательный атрибут currency, который определяет трехбуквенный код валюты для налогов. Пример: USD. Элемент <Tax> обязателен, если значение <Baserate> больше нуля.
Если для атрибута all_inclusive элемента |
| <Unavailable> | Optional | Object | Указывает, что маршрут недоступен для бронирования. Контейнер для более подробных причин, по которым маршрут был недоступен. В тег <Unavailable> могут быть вложены следующие причины недоступности:
|
Примеры
Пример с несколькими ресурсами
В примере ниже задан один маршрут и его цена для двух объектов:
<?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>
В этом примере не показаны сведения о переговорной комнате, такие как описание, изображение и подпись, название комнаты и ее вместимость.
Вы можете один раз указать эту информацию в отдельном сообщении-транзакции, которое будет храниться в Google. Затем вы сможете ссылаться на него во всех последующих обновлениях цен и ассортимента. Подробную информацию можно найти в разделе Метаданные пакета переговорной комнаты.
Пример с несколькими тарифами
В примере ниже заданы одна программа пребывания и один объект недвижимости с несколькими тарифами для разного количества гостей. Элемент <Rates> позволяет указать несколько цен для одного объекта. Пример ниже также подходит для жилья для отпуска (VR).
<?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>
Пример недоступного контента
В примере ниже определены три программы пребывания. Для первой не удалось получить информацию о доступности из каналов ниже по цепочке. Вторая не соответствует минимальной длительности пребывания, и на указанные даты уже забронированы номера. Третья программа пребывания невозможна, так как гостиница закрыта в день прибытия, но открывается в период пребывания.
<?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>
Контейнер для одного или нескольких блоков <Rate>. Каждый элемент <Rate> в <Rates> определяет отдельную цену для номера или маршрута.
Используйте элемент <Rates>, только если для одного номера или маршрута есть несколько тарифов. Например, вы можете задать несколько специальных цен, частных цен или специальных цен в пакетах услуг.
Элемент <Rates> находится в следующем месте иерархии XML-файла сообщения-транзакции:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>(Can also contain<Rates>) + ...
Значения, заданные в элементе <Rate>, переопределяют значения, связанные с ценой, в родительском элементе <Result> или <RoomBundle>. Если они не заданы в <Rate>, то наследуют значение от родительского элемента. Элемент <RoomBundle> наследует только элемент <AllowablePointsofSale>.
Синтаксис
Элемент <Rates> использует следующий синтаксис:
<?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>
Атрибуты
Элемент <Rates> имеет следующие атрибуты:
| Атрибут | Обязательно? | Описание |
|---|---|---|
| rate_rule_id | Optional | Для специальных цен этот идентификатор сопоставляет цену с определением в файле определения правил назначения цен. Ограничение на количество символов для этого поля – 40 символов. Идентификатор не может быть пустой строкой. |
Дочерние элементы
Элемент <Rates> содержит следующие дочерние элементы:
| Дочерний элемент | Обязательно? | Тип | Описание |
|---|---|---|---|
| <AllowablePointsOfSale> | Optional | Object | Одна или несколько целевых страниц, которые подходят для гостиницы. Этот элемент использует тот же синтаксис, что и <AllowablePointsOfSale> на <Result>. |
| <Baserate> | Required | float | Цена номера за период проживания. Этот элемент использует тот же синтаксис, что и <Baserate> на <Result>.
Примечание. Дочерний элемент |
| <ChargeCurrency> | Optional | enum | Когда и где пользователь оплачивает бронирование. Этот элемент использует тот же синтаксис, что и <ChargeCurrency> в <Result>. |
| Optional | string | Устарело. Специальные поля, которые можно использовать для передачи дополнительных данных, связанных с гостиницей, на целевую страницу. Этот элемент использует тот же синтаксис, что и <Custom[1‑5]> в <Result>. В каждом поле может быть не более 200 символов. Подробнее
о файлах целевых страниц… Если элементы <Custom> указаны в элементе <Result>, они не наследуются в элементе <RoomBundle>. Их нужно задавать отдельно для каждого элемента <RoomBundle> или, если необходимо, включать в элемент <PackageData>.
|
|
| <ExpirationTime> | Optional | DateTime | Дата и время, когда тариф перестает действовать. Этот элемент использует тот же синтаксис, что и <ExpirationTime> в <Result>. |
| <MilesIncluded> | Optional | boolean | В стоимость включены мили для часто летающих пассажиров. Параметры:
Примечание. Поля |
| <Occupancy> | Optional | integer | Указывает максимальное количество гостей, для которых действует эта цена. Если значение не указано, оно считается равным родительскому тарифу.
Вместе с |
| <OtherFees> | Required | float | Сборы, помимо базовой цены и налогов, которые влияют на итоговую стоимость номера. Этот элемент использует тот же синтаксис, что и <OtherFees> в <Result>.
Если для атрибута all_inclusive элемента |
| <Refundable> | Optional | Object | Позволяет указать, что тариф предусматривает полный возврат средств или бесплатную отмену. Если вы не укажете эту информацию, она не будет показываться.
Правила возврата платежей на уровне <PackageData> переопределяют правила на уровне <Result>. Правила возврата платежей на уровне <Rates> переопределяют правила на уровне <PackageData>. Вы также можете выделить цены с возможностью возврата средств, не изменяя схему сообщения-транзакции. Подробнее о правилах в отношении возвратных тарифов…
В примере ниже показан элемент <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Примечание. Рекомендуем задать все атрибуты. Если не задан один или несколько атрибутов, генерируется предупреждение о статусе фида. Если вы не укажете атрибуты, тариф не будет показываться как возвратный. Вот эти атрибуты:
При настройке атрибутов обратите внимание на следующее:
|
| <Tax> | Required | float | Налоги, которые учитываются при расчете итоговой цены номера. Этот элемент использует тот же синтаксис, что и элемент <Tax> в <Result>. |
Примеры
Базовая и специальная цена
В примере ниже показано сообщение-транзакция, содержащее базовую и специальную цены.
<?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>
Несколько специальных цен
В примере ниже в элементе <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>
Определяет цены и доступность пакетов номеров как дочерний элемент <Result> в сообщении <Transaction>. Для каждого пакета или маршрута нужно задать отдельный элемент. Чтобы определить пакет и условия для пакетов номеров, используйте <RoomData>.
Элемент <RoomBundle> находится в следующем месте иерархии XML-файла сообщения-транзакции:
+<Transaction>+<PropertyDataSet>// Room and package metadata + <Property> +<RoomData>+<PackageData>+<Result>// Pricing and availability +<Rates>+<RoomBundle>+ ...
Подробнее о наборах для переговорных комнат…
Синтаксис
Элемент <RoomBundle> использует следующий синтаксис:
<?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>
Атрибуты
У элемента <RoomBundle> нет атрибутов.
Дочерние элементы
Элемент <RoomBundle> содержит следующие дочерние элементы:
| Дочерний элемент | Обязательно? | Тип | Описание |
|---|---|---|---|
| <Baserate> | Required | float | Определяет цену пакета услуг на время проживания. Этот элемент использует тот же синтаксис, что и <Baserate> в <Result>, за следующим исключением:
|
| <BreakfastIncluded> | Optional | boolean | Указывает, включен ли завтрак в стоимость пакета. |
| <ChargeCurrency> | Optional | enum | Когда и где пользователь оплачивает бронирование. Этот элемент использует тот же синтаксис, что и <ChargeCurrency> в <Result>.
Значение по умолчанию: |
| Optional | string | Устарело. Специальные поля для передачи дополнительных данных на целевые страницы пакета номеров. Эти элементы используют тот же синтаксис, что и <Custom[1-5]> в <Result>. Максимальная длина значения в пользовательском поле – 200 символов. Подробнее о файлах целевых страниц…
Пользовательские переменные указываются только в том случае, если вы отправляете цены в сообщении-транзакции. Если элементы <Custom> указаны в элементе <Result>, они не наследуются в элементе <RoomBundle>. Их нужно задавать отдельно для каждого элемента <RoomBundle> или, если необходимо, включать в элемент <PackageData>.
|
|
| <InternetIncluded> | Optional | boolean | Если в пакет входит бесплатный доступ к интернету, а в другие пакеты – нет. Не указывайте этот элемент для пакетов номеров в гостинице, где бесплатный интернет предоставляется во всех номерах. Этот элемент не относится к проводному интернету в номерах или беспроводному интернету, который недоступен в номерах. |
| <MilesIncluded> | Optional | boolean | В стоимость включены мили для часто летающих пассажиров. Параметры:
Примечание. Поля |
| <Occupancy> | Required | integer | Указывает максимальное количество гостей, для которых действует эта цена. Например, в большом люксе могут разместиться шесть гостей, но в рамках пакета "Медовый месяц" допускается только два гостя.
Это значение должно быть меньше или равно При определении количества гостей в URL целевой страницы используйте переменные Значение Примечания
|
| <OtherFees> | Required | float | Сборы, помимо базовой цены и налогов, которые влияют на итоговую стоимость номера. Элемент <OtherFees> принимает один обязательный атрибут currency, который определяет трехбуквенный код валюты для комиссий. Например, для долларов США используйте USD. |
| <PackageID> | Optional (recommended) | string | Уникальный идентификатор данных пакета. Используйте этот идентификатор, чтобы сопоставить данные о пакете номеров с данными, отправленными в элементе <PackageData>. Подробную информацию можно найти в разделе Метаданные пакета Room Bundle. (Этот идентификатор также можно использовать для ссылки на общее определение пакета услуг, используемое в одном сообщении-транзакции при определении данных пакета услуг в строке.) |
| <ParkingIncluded> | Optional | boolean | Включает ли пакет номеров бесплатную парковку, если в отеле она платная. Если парковка бесплатная, не указывайте значение для этого элемента.
Допустимые значения: |
| <RatePlanID> | Optional | string | Идентификатор тарифного плана – это уникальный идентификатор комбинации номера и пакета. Например, если значение <RoomID> равно 5, а значение <PackageID> – ABC, то в качестве значения <RatePlanID> можно использовать 5-ABC. Мы настоятельно рекомендуем использовать RatePlanID в качестве переменной для создания динамического URL целевой страницы (ранее – точки продаж).
Примечание. Для оптимальной работы значение RatePlanID должно содержать не более 50 символов. Подробнее об использовании переменных и условий… |
| <Rates> | Optional | <Rates> |
Тарифы, которые переопределяют тарифы по умолчанию для этого пакета услуг. Этот элемент использует тот же синтаксис, что и <Rates> в <Result>. |
| <Refundable> | Optional | Object | Позволяет указать, что тариф предусматривает полный возврат средств или бесплатную отмену бронирования. Если вы не укажете эту информацию, она не будет показываться.
Правила возврата платежей на уровне <PackageData> переопределяют правила на уровне <Result>. Правила возврата платежей на уровне <Rates> переопределяют правила на уровне <PackageData>. Вы также можете выделить цены с возможностью возврата средств, не изменяя схему сообщения-транзакции. Подробнее о правилах в отношении возвратных тарифов…
В примере ниже показан элемент <Refundable available="1" refundable_until_days="7" refundable_until_time="18:00:00"/> Примечание. Рекомендуем задать все атрибуты. Если не задан один или несколько атрибутов, генерируется предупреждение о статусе фида. Если вы не укажете ни один из атрибутов, тариф не будет показываться как возвратный. Вот эти атрибуты:
При настройке атрибутов обратите внимание на следующее:
|
| <RoomID> | Required | string | Уникальный идентификатор данных комнаты. Используйте этот идентификатор, чтобы сопоставить данные о пакете номеров с информацией, отправленной в файле <RoomData>.
Подробную информацию можно найти в разделе
Метаданные пакета номеров. (Этот идентификатор также можно использовать для ссылки на общее определение номера в одном сообщении-транзакции при определении данных номера в строке.) |
| <Tax> | Required | float | Налоги, которые учитываются при расчете итоговой цены номера.
Элемент <Tax> принимает один обязательный атрибут currency, который определяет трехбуквенный код валюты для налогов. Например, для долларов США используйте USD. |
Примеры
Пакет для одного гостя
В примере ниже показан ответ с одним пакетом заполняемости.
Если пользователь выбирает 1 в окне выбора количества гостей, Google показывает самую низкую цену, соответствующую требованиям, независимо от количества гостей.
Если цена за одноместное размещение недоступна, Google покажет самую низкую цену за двухместное размещение. Обратите внимание, что цены на одноместное размещение не запрашиваются в реальном времени, если в кеше есть цены на двухместное или более размещение для маршрута.
В этом примере используются элементы <RoomID> и <PackageID>, которые ссылаются на стандартные метаданные номеров и пакетов. Для этого используйте элементы <RoomData> и <PackageData>.
<!-- 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>
Два или более вариантов размещения
В примере ниже показан ответ, содержащий два или более вариантов размещения.
В этом примере используются элементы <RoomID> и <PackageID>, которые ссылаются на метаданные номеров и пакетов. Для этого используйте элементы <RoomData> и <PackageData>.
<!-- 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>
Несколько наборов для переговорных комнат
В примере ниже показано, как задать вместимость для нескольких пакетов номеров, чтобы продемонстрировать возможные цены на номера в хостеле.
<?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>
Несколько специальных цен
В примере ниже в элементе <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> в сообщении-транзакции указывает максимальное количество гостей в номере или пакете. <OccupancyDetails> может содержать дополнительную информацию, например количество и тип гостей (взрослые или дети).
Если элементы <Occupancy> и <OccupancyDetails> находятся внутри элемента <Rates> в <Result> или <RoomBundle>, это означает, что цена зависит от количества гостей.
Если вы включаете <OccupancyDetails> в <RoomBundle> вместе с вложенным элементом <Rate>, вы не можете отправить базовый элемент <Occupancy> в <Rate>. Вместо этого рекомендуется использовать один из следующих вариантов:
- Не указывать заполняемость в элементе
<Rate>. В этом случае элемент<Rate>наследует значение<OccupancyDetails>непосредственно из элемента<RoomBundle>.
или
- Дублирование
<OccupancyDetails>. В этом случае отправьте дополнительные идентичные элементы<OccupancyDetails>как в элементе<RoomBundle>, так и во вложенном элементе<Rate>.
Синтаксис
Если появляется <OccupancyDetails>, то перед ним всегда стоит <Occupancy>.
Обратите внимание на следующий синтаксис:
<?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>Дочерние элементы
Элемент <OccupancyDetails> содержит следующие дочерние элементы:
| Дочерний элемент | Обязательно? | Тип | Описание |
|---|---|---|---|
| <NumAdults> | Required | integer | Количество взрослых гостей. Минимум – 1, максимум – 20. |
| <Children> | Optional | Object | Контейнер для одного или нескольких элементов <Child>. |
| <Child age> | Optional | integer | Максимальный возраст ребенка, например <Child age="17">. |
Примеры
В примерах ниже показано, как <OccupancyDetails> может выглядеть в дочерних элементах <Results>, <RoomBundle> или <Rates>.
Ответ с результатами
В примере ниже показано, как в ответ на запрос цен в режиме реального времени, в котором пользователь указал количество и тип гостей, задать один маршрут и цену для него. В данном случае в <Result> возвращается <OccupancyDetails> – двое взрослых и один ребенок.
<?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>
Ответ с ценами
В примере ниже задан один маршрут и его цена для одного взрослого и одного ребенка. В данном случае <OccupancyDetails> возвращаются в элементе <Rates> объекта <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>
Набор для переговорных комнат
В примере ниже указано размещение для двух взрослых и одного ребенка на две ночи с возмещаемым тарифом. Здесь <OccupancyDetails> появляются внутри <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>
Несколько наборов для переговорных комнат
В примере ниже задано несколько цен <RoomBundle>, которые действуют только при размещении двух взрослых и двух детей. В этом примере <OccupancyDetails> появляются в элементе <Rates> типа <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>