Запросы
Синтаксис
В сообщении Transaction (Property Data) используется следующий синтаксис:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="timestamp"
id="message_ID"
partner="partner_key">
<PropertyDataSet action="[overlay|delta]">
<!-- (Required) ID that matches the Hotel List Feed -->
<Property>HotelID</Property>
<RoomData>
<!-- (Required) One room ID per RoomData element -->
<RoomID>RoomID</RoomID>
<Name>
<Text text="room_name" language="language_code"/>
</Name>
<Description>
<Text text="room_description" language="language_code"/>
</Description>
<!-- (Optional) Restricts the rate plans allowed for this room type to
those listed here. If specified, don't specify AllowableRoomIDs. -->
<AllowablePackageIDs>
<AllowablePackageID>PackageID</AllowablePackageID>
</AllowablePackageIDs>
<Capacity>max_number_of_occupants</Capacity>
<AdultCapacity>max_number_of_adult_occupants</AdultCapacity>
<ChildCapacity>max_number_of_child_occupants</ChildCapacity>
<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>
<JapaneseHotelRoomStyle>[western|japanese|japanese_western]</JapaneseHotelRoomStyle>
<Beds>
<Bed size="[single|semi_double|double|queen|king]">
<Width unit="cm" number="bed_width"/>
<Length unit="cm" number="bed_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>
<PackageData>
<!-- (Required) One package ID per PackageData element -->
<PackageID>PackageID</PackageID>
<Name>
<Text text="package_name" language="language_code"/>
</Name>
<Description>
<Text text="package_description" language="language_code"/>
</Description>
<!-- (Optional) Restricts the room types allowed for this rate plan to
those listed here. If specified, don't specify AllowablePackageIDs. -->
<AllowableRoomIDs>
<AllowableRoomID>RoomID</AllowableRoomID>
</AllowableRoomIDs>
<!-- Add Loyalty point information -->
<MilesIncluded>
<LoyaltyCampaignID>campaign-ID</LoyaltyCampaignID>
<!-- (Optional) Use <NumberOfMiles> if the rate plan earns fixed loyalty rewards-->
<NumberOfMiles>integer</NumberOfMiles>
</MilesIncluded>
<Refundable available="[false|true]" refundable_until_days="number_of_days"
refundable_until_time="time"/>
<!-- 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>
</PackageData>
</PropertyDataSet>
</Transaction>
Элементы и атрибуты
Сообщение «Транзакция (данные об объекте недвижимости)» содержит следующие элементы и атрибуты:
| Элемент / @Атрибут | События | Тип | Описание |
|---|---|---|---|
| Transaction | 1 | Complex element | В реализации ARI это корневой элемент сообщения, определяющего типы номеров и пакеты услуг для одного объекта недвижимости. |
| Transaction / @timestamp | 1 | DateTime | Дата и время создания этого сообщения. |
| Transaction / @id | 1 | string | Уникальный идентификатор для данного запроса. Это значение возвращается в ответном сообщении. Допустимые символы: az, AZ, 0-9, _ (подчеркивание) и - (тире). |
| Transaction / @partner | 1 | string | Партнерская учетная запись для этого сообщения. Это строковое значение соответствует значению "Партнерский ключ", указанному на странице настроек учетной записи в Hotel Center. Примечание: Если у вас есть бэкэнд, предоставляющий данные для нескольких учетных записей, это значение должно совпадать со значением атрибута |
| Transaction / PropertyDataSet | 1.. | PropertyDataSet | Контейнер для определения типов номеров и пакетов услуг для одного объекта недвижимости. Рекомендуется отправлять |
| Transaction / PropertyDataSet / @action | 0..1 | enum | Тип обновления, применяемого к определениям стоимости номеров. Допустимые значения:
Этот атрибут является необязательным и по умолчанию имеет значение |
| Transaction / PropertyDataSet / Property | 1 | string | Уникальный идентификатор объекта недвижимости. Это значение должно совпадать с идентификатором отеля, указанным с помощью <id> в элементе <listing> в ленте списка отелей. Идентификатор отеля также указан в Hotel Center . |
| Transaction / PropertyDataSet / RoomData | 0..n | RoomData | Описывает комнату. Примечание: Требуется наличие хотя бы одного из следующих типов данных: |
| Transaction / PropertyDataSet / RoomData / RoomID | 1 | RoomID | Уникальный идентификатор типа номера. Это значение используется в качестве ссылки на атрибут InvTypeCode в элементе <StatusApplicationControl> в сообщениях <OTA_HotelAvailNotifRQ> , <OTA_HotelRateAmountNotifRQ> и <OTA_HotelInvCountNotifRQ> . |
| Transaction / PropertyDataSet / RoomData / Name | 1 | Name | Контейнер для названия категории номера на одном или нескольких языках. |
| Transaction / PropertyDataSet / RoomData / Name / Text | 1..n | Text | Указывает название категории номера на одном из языков. |
| Transaction / PropertyDataSet / RoomData / Name / Text / @text | 1..n | string | Название категории номера на языке, указанном в атрибуте language . |
| Transaction / PropertyDataSet / RoomData / Description | 1 | Name | Контейнер для описания категории номера на одном или нескольких языках. |
| Transaction / PropertyDataSet / RoomData / Description / Text | 1..n | Text | Указывает описание категории номера на одном из языков. |
| Transaction / PropertyDataSet / RoomData / Description / Text / @text | 1..n | string | Описание категории номера на языке, указанном в атрибуте language . |
| Transaction / PropertyDataSet / RoomData / Description / Text / @language | 1..n | string | Двухбуквенный языковой код . |
| Transaction / PropertyDataSet / RoomData / AllowablePackageIDs | 0..1 | AllowablePackageIDs | Контейнер для элементов <AllowablePackageID> . Если указан параметр Если Используйте либо |
| Transaction / PropertyDataSet / RoomData / AllowablePackageIDs / AllowablePackageID | 1..n | AllowablePackageID | Указывает PackageID тарифного плана, который можно комбинировать с данным типом номера. Тарифный план определяется комбинацией пакета, тарифов и доступности. PackageID соответствует RatePlanCode в сообщениях OTA_HotelRateAmountNotifRQ и OTA_HotelAvailNotifRQ. |
| Transaction / PropertyDataSet / RoomData / Capacity | 0..1 | integer | Максимальное количество взрослых и детей, которое может физически вместить номер. Это значение должно быть больше или равно любому значению NumberOfGuests , которое вы указываете вместе с тарифами. Значение параметра Примечание: Если параметр |
| Transaction / PropertyDataSet / RoomData / AdultCapacity | 0..1 | integer | Максимальное количество взрослых, которое может физически вместить номер. Это значение должно быть больше или равно любому значению NumberOfGuests , которое вы указываете вместе с тарифами. Значение параметра |
| Transaction / PropertyDataSet / RoomData / ChildCapacity | 0..1 | integer | Максимальное количество детей, которое может физически вместить комната. Значение параметра |
| Transaction / PropertyDataSet / RoomData / OccupancySettings | 0..1 | OccupancySettings | Настройки, позволяющие ограничивать или изменять требования к количеству людей в номере. Элемент
<OccupancySettings> <MinOccupancy>2</MinOccupancy> <MinAge>16</MinAge> </OccupancySettings> Не все дочерние элементы обязательно должны быть включены. |
| Transaction / PropertyDataSet / RoomData / PhotoURL | 0..n | PhotoURL | URL-адрес и, при необходимости, подпись к фотографии указанного номера или пакета номеров. Для номера или пакета номеров можно указать несколько <PhotoURL> .Этот элемент принимает следующие дочерние элементы:
<PhotoURL> <URL>http://www.example.com/image1.jpg</URL> <Caption> <Text text="A bright way to enjoy your mornin' cuppa tea." language="en"/> <Text text="Une façon lumineuse pour profiter de votre tasse de thé." language="fr"/> </Caption> </PhotoURL> |
| Transaction / PropertyDataSet / RoomData / RoomFeatures | 0..1 | <RoomFeatures> | Содержит информацию об особенностях номера. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / JapaneseHotelRoomStyle | 0..1 | enum | Указывает на стиль номера в японском отеле. Допустимые значения:
|
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Beds | 0..1 | Object | В номере столько <Bed> , сколько в нем есть. Обратите внимание, что японские футоны здесь учитывать не следует. Каждая
<Bed> имеет следующие дочерние элементы:
<Beds>
<Bed size="double">
<Width unit="cm" number="140"/>
<Length unit="cm" number="195"/>
</Bed>
<Bed/> <!-- Size unknown -->
</Beds> |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Suite | 0.. | enum | Добавьте этот элемент, если номер является люксом. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Capsule | 0..1 | enum | Добавьте этот элемент, если это капсульный номер. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Roomsharing | 0..1 | enum | Независимо от того, делится ли эта комната с другими жильцами, такими как владельцы или другие гости, допустимыми являются shared и private ценности. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Outdoor | 0..1 | enum | Укажите этот элемент, если данное помещение представляет собой жилье на открытом воздухе, не имеющее стационарных стен, водопровода и системы климат-контроля. Например, гостиничные номера не являются жильем на открытом воздухе, в то время как кемпинги, где гости размещаются в палатках, и парки для автодомов, куда гости приезжают на собственных автодомах, являются жильем на открытом воздухе. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / MobileAccessible | 0..1 | enum | Предусмотреть этот элемент следует, если помещение приспособлено для людей с ограниченной подвижностью. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Smoking | 0..1 | enum | Указывает, является ли номер номером для некурящих или для курящих. Допустимые значения: non_smoking и smoking . |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / BathAndToilet | 0..1 | Object | Содержит информацию о наличии ванны и туалета в номере. Атрибут:
Данный элемент может содержать следующие дочерние элементы (по желанию):
Пример: <BathAndToilet relation="separate">
<Bath bathtub="1" shower="1"/>
<Toilet
electronic_bidet="1"
mobility_accessible="1"/>
</BathAndToilet> |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / OpenAirBath | 0..1 | enum | Этот элемент следует предусмотреть, если в номере есть отдельная ванная комната под открытым небом. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / AirConditioning | 0..1 | enum | Укажите этот элемент, если в этом помещении есть кондиционер. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Balcony | 0..1 | enum | Добавьте этот элемент, если в комнате есть балкон или веранда. |
| Transaction / PropertyDataSet / RoomData / RoomFeatures / Views | 0..1 | Object | Допустимые варианты включают: |
| Transaction / PropertyDataSet / PackageData | 0..n | PackageData | Контейнер для элементов, описывающих характеристики тарифа и термины, не являющиеся частью фактического описания номера. Примечание: Требуется наличие хотя бы одного из следующих типов данных: |
| Transaction / PropertyDataSet / PackageData / PackageID | 1 | string | PackageID в этих сообщениях соответствует RatePlanCode в сообщениях OTA_HotelRateAmountNotifRQ и OTA_HotelAvailNotifRQ. |
| Transaction / PropertyDataSet / PackageData / Name | 1 | Name | Контейнер для названия пакета на одном или нескольких языках. |
| Transaction / PropertyDataSet / PackageData / Name / Text | 1..n | Text | Указывает название пакета на одном из языков. |
| Transaction / PropertyDataSet / PackageData / Name / Text / @text | 1..n | string | Название пакета на языке, указанном в атрибуте language . |
| Transaction / PropertyDataSet / PackageData / Description | 1 | Description | Контейнер для описания упаковки на одном или нескольких языках. |
| Transaction / PropertyDataSet / PackageData / Description / Text | 1..n | Text | Указывает описание пакета на одном языке. |
| Transaction / PropertyDataSet / PackageData / Description / Text / @text | 1..n | string | Описание пакета на языке, указанном атрибутом language . |
| Transaction / PropertyDataSet / PackageData / Description / Text / @language | 1..n | string | Двухбуквенный языковой код . |
| Transaction / PropertyDataSet / PackageData / AllowableRoomIDs | 0..1 | AllowableRoomIDs | Контейнер для элементов <AllowableRoomID> . Если указан параметр Если Используйте либо |
| Transaction / PropertyDataSet / PackageData / AllowableRoomIDs / AllowableRoomID | 1..n | AllowableRoomID | Указывает идентификатор номера (RoomID) типа номера, который может использоваться с данным тарифным планом. Тип номера определяется в элементе <RoomData> . |
| Transaction / PropertyDataSet / PackageData / MilesIncluded | 0..1 | MilesIncluded | Добавьте информацию о бонусных баллах к пакетам услуг в зависимости от того, как определены тарифные планы или сами пакеты. Укажите элемент <MilesIncluded> внутри элемента <PackageData> , который определяет тарифный план. Элемент <MilesIncluded> имеет следующий дочерний элемент:
|
| Transaction / PropertyDataSet / PackageData / Refundable | 0..1 | Refundable | Позволяет указать, что тариф подлежит полному возврату или отмене. Если этот параметр не указан, информация о возврате средств не отображается. Примечание: Мы рекомендуем установить все атрибуты. Если один или несколько атрибутов не установлены, генерируется предупреждающее сообщение о состоянии ленты. Если вы не укажете никаких параметров, ставка не будет отображаться как подлежащая возврату. При задании атрибутов обратите внимание на следующее:
|
| Transaction / PropertyDataSet / PackageData / Refundable / @available | 1 | boolean | (Обязательно) Установите значение 1 или true чтобы указать, допускает ли тариф полный возврат средств; в противном случае установите значение 0 или false . |
| Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days | 0..1 | integer | (Обязательно, если available равно true ) Указывает количество дней до заезда, за которое можно запросить полный возврат средств. Значение refundable_until_days должно быть целым числом от 0 до 330 включительно. |
| Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_time | 0.. | Time | (Настоятельно рекомендуется, если available равно true ) Указывает самое позднее время суток по местному времени отеля, когда будет удовлетворен запрос на полный возврат средств. Это можно комбинировать с refundable_until_days , чтобы указать, например, что «возврат средств возможен до 16:00 за два дня до заезда». Если refundable_until_time не задан, значение по умолчанию равно полуночи. |
| Transaction / PropertyDataSet / PackageData / BreakfastIncluded | 0..1 | boolean | Указывает, включен ли завтрак в стоимость номера данного типа. Допустимые значения: 0 (или false ) и 1 (или true ). Рекомендуется использовать |
| Transaction / PropertyDataSet / PackageData / CheckinTime | 0..1 | Time | Заезд возможен в самое раннее время по местному времени отеля. Время должно быть менее 24:00. |
| Transaction / PropertyDataSet / PackageData / CheckoutTime | 0..1 | Time | Максимально возможное время выезда по местному времени отеля. |
| Transaction / PropertyDataSet / PackageData / InternetIncluded | 0..1 | boolean | Указывает, предоставляется ли в номере бесплатный доступ в интернет, в то время как в других номерах эта услуга отсутствует. Не следует устанавливать этот параметр в отеле, предоставляющем бесплатный интернет во всех номерах. Этот параметр не применяется к проводному или беспроводному интернету в номерах, который недоступен для гостей. Допустимые значения: 0 (или false ) и 1 (или true ). |
| Transaction / PropertyDataSet / PackageData / Meals | 0..1 | Object | Содержит информацию о блюдах, входящих в этот набор. Элемент
Необязательные атрибуты используются только в том случае, если Для корректной работы фильтров питания ( |
| Transaction / PropertyDataSet / PackageData / ParkingIncluded | 0..1 | boolean | Указывает, включает ли номер бесплатную парковку, если в противном случае парковка в этом отеле была бы платной услугой. Не указывайте значение для этого элемента для отеля, предлагающего бесплатную парковку. Допустимые значения: 0 (или false ) и 1 (или true ). Значение по умолчанию — false . |
| Transaction / PropertyDataSet / PackageData / PhotoURL | 0..1 | Object | (Аналогично <PhotoURL> в <RoomData> , но для пакета (например, фотографии блюд).) |
Примеры
Данные о номере и пакетах услуг
Ниже приведён базовый пример того, как определить данные о номере и пакете услуг объекта недвижимости в сообщении транзакции (данные объекта недвижимости). Атрибут overlay используется для того, чтобы гарантировать, что если какие-либо данные неожиданно уже существуют, все существующие данные будут удалены и заменены данными из этого сообщения:
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="King" language="en"/>
</Name>
<Description>
<Text text="Room with a king bed" language="en"/>
</Description>
<Capacity>2</Capacity>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image.jpg</URL>
<Caption>
<Text text="Room with a king bed" language="en"/>
</Caption>
</PhotoURL>
</RoomData>
<RoomData>
<RoomID>RoomID_2</RoomID>
<Name>
<Text text="Double" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Standard" language="en"/>
</Name>
<Description>
<Text text="Standard rate" language="en"/>
</Description>
<MilesIncluded>
<LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
</MilesIncluded>
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>PackageID_2</PackageID>
<Name>
<Text text="Free Breakfast" language="en"/>
</Name>
<Description>
<Text text="Free breakfast rate" language="en"/>
</Description>
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Добавить тип номера
Ниже приведён пример того, как добавить тип номера и пакет услуг к существующим данным <Transaction> :
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-07-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="delta">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_3</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>PackageID_3</PackageID>
<Name>
<Text text="Non-Refundable" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="false"/>
</PackageData>
</PropertyDataSet>
</Transaction>
Удалить типы номеров
Ниже приведён пример удаления существующих типов номеров и пакетов. В этом сценарии, если сообщения из разделов «Данные о номере и пакете» и «Добавить тип номера» были отправлены в Google ранее, то после получения Google показанного сообщения типы номеров King и « Double » больше не будут существовать. Обратите внимание, что удаление данных пакета влияет на общий тарифный план, определённый в сообщениях Transaction (Property Data), OTA_HotelRateAmountNotifRQ и OTA_HotelAvailNotifRQ (путём ссылки на одно и то же значение PackageID ), поэтому могут потребоваться соответствующие обновления с использованием других типов сообщений, чтобы отразить тот факт, что PackageID_2 и PackageID_3 больше не определены здесь.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-08-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
<Capacity>2</Capacity>
<PhotoURL>
<URL>http://www.foo.com/static/bar/image.jpg</URL>
<Caption>
<Text text="Room with a queen bed" language="en"/>
</Caption>
</PhotoURL>
</RoomData>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Refundable" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Ограничение тарифных планов
Ниже приведён пример использования элемента <AllowablePackageIDs> для ограничения тарифных планов, разрешенных для определённого типа номера. В этом примере номер типа Queen ( RoomID_2 ) может сочетаться только с пакетом услуг и тарифным планом, обозначенными как PackageID_1.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-12-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="King" language="en"/>
</Name>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<RoomData>
<RoomID>RoomID_2</RoomID>
<Name>
<Text text="Queen" language="en"/>
</Name>
<AllowablePackageIDs>
<AllowablePackageID>PackageID_1</AllowablePackageID>
</AllowablePackageIDs>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
<PackageData>
<PackageID>PackageID_1</PackageID>
<Name>
<Text text="Standard" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>0</BreakfastIncluded>
</PackageData>
<PackageData>
<PackageID>PackageID_2</PackageID>
<Name>
<Text text="Free Breakfast" language="en"/>
</Name>
<!-- Additional PackageData child elements omitted. -->
<Refundable available="true" refundable_until_days="7" refundable_until_time="18:00:00"/>
<BreakfastIncluded>1</BreakfastIncluded>
</PackageData>
</PropertyDataSet>
</Transaction>
Ограничьте вместимость помещения.
Ниже приведён пример использования элементов <Capacity> , <AdultCapacity> , <ChildCapacity> для установки ограничений на вместимость помещений.
<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2020-12-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<PropertyDataSet action="overlay">
<Property>Property_1</Property>
<RoomData>
<RoomID>RoomID_1</RoomID>
<Name>
<Text text="Double" language="en"/>
</Name>
<Capacity>4</Capacity>
<AdultCapacity>4</AdultCapacity>
<ChildCapacity>3</ChildCapacity>
<!-- Additional RoomData child elements omitted. -->
</RoomData>
</PropertyDataSet>
</Transaction>
В двухместном номере (RoomID_1) могут разместиться до 4 гостей. Кроме того, в нем могут разместиться до 4 взрослых и до 3 детей. Для бронирования этого номера необходимо соблюдение всех трех требований к вместимости. Данная конфигурация представляет собой типичный номер с двумя кроватями, на каждой из которых могут разместиться два человека. Вместимость для детей на одного человека меньше общей вместимости, поскольку в номере должен находиться как минимум один взрослый.
Расширенные примеры с <RoomFeatures> и питанием
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>
Питание
В следующем примере определены метаданные номера и пакетов услуг, включая информацию о питании, фотографиях, а также времени заезда и выезда:
<?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>
Ответы
Синтаксис
Сообщение TransactionResponse (Property Data) использует следующий синтаксис:
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="timestamp"
id="message_ID"
partner="partner_key">
<!-- Either Success or Issues will be populated. -->
<Success/>
<Issues>
<Issue code="issue_code" status="issue_type">issue_description</Issue>
</Issues>
</TransactionResponse>
Элементы и атрибуты
Сообщение TransactionResponse (Property Data) содержит следующие элементы и атрибуты:
| Элемент / @Атрибут | События | Тип | Описание |
|---|---|---|---|
| TransactionResponse | 1 | Complex element | Корневой элемент, указывающий на успешность или проблемы, возникшие с полученным сообщением запроса транзакции. |
| TransactionResponse / @timestamp | 1 | DateTime | Дата и время создания этого сообщения. |
| TransactionResponse / @id | 1 | string | Уникальный идентификатор из соответствующего сообщения транзакции. |
| TransactionResponse / @partner | 1 | string | Это сообщение отправлено на учетную запись партнера. |
| TransactionResponse / Success | 0..1 | Success | Указывает на то, что сообщение транзакции было успешно обработано без предупреждений, ошибок или сбоев. В каждом сообщении присутствует либо |
| TransactionResponse / Issues | 0..1 | Issues | Контейнер для одной или нескольких проблем, возникших в процессе обработки сообщения транзакции. В каждом сообщении присутствует либо |
| TransactionResponse / Issues / Issue | 1..n | Issue | Описание предупреждения, ошибки или сбоя, возникшего при обработке сообщения транзакции. Подробную информацию об этих проблемах можно найти в разделе «Сообщения об ошибках состояния ленты» . |
| TransactionResponse / Issues / Issue / @code | 1 | integer | Идентификатор проблемы. |
| TransactionResponse / Issues / Issue / @status | 1 | enum | Тип возникшей проблемы. Допустимые значения: |
Примеры
Успех
Ниже приведён ответ на сообщение об успешной обработке транзакции.
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Success/>
</TransactionResponse>
Проблемы
Ниже приведён ответ на сообщение о транзакции, не обработанное из-за ошибок.
<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="2020-05-18T16:20:00-04:00"
id="12345678"
partner="partner_key">
<Issues>
<Issue code="1001" status="error">Example</Issue>
</Issues>
</TransactionResponse>