Транзакция (данные ресурса)

Запросы

Синтаксис

Сообщение 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 (Property Data) содержит следующие элементы и атрибуты:

Элемент / @атрибут Количество Тип Описание
Transaction 1 Complex element В реализации ARI это корневой элемент для сообщения, определяющего типы номеров и пакеты для одного объекта.
Transaction / @timestamp 1 DateTime Дата и время создания этого сообщения.
Transaction / @id 1 string Уникальный идентификатор этого сообщения запроса. Это значение возвращается в ответном сообщении. Допустимые символы: a–z, A–Z, 0–9, _ (подчеркивание) и - (дефис).
Transaction / @partner 1 string Аккаунт партнера для этого сообщения. Это строковое значение, которое соответствует значению "Ключ партнера" на странице настроек аккаунта в Hotel Center.

Примечание. Если у вас есть сервер, который предоставляет фиды для нескольких аккаунтов, это значение должно совпадать со значением атрибута ID, указанным в элементе <RequestorID> сообщений <OTA_HotelRateAmountNotifRQ> и <OTA_HotelAvailNotifRQ> для того же аккаунта.

Transaction / PropertyDataSet 1.. PropertyDataSet Контейнер для определения типов номеров и пакетов для одного объекта.

Рекомендуется отправлять <PropertyDataSet> только один раз и обновлять только при необходимости.

Transaction / PropertyDataSet / @action 0..1 enum

Тип обновления, которое нужно применить к определениям цен за номер.

Допустимые значения:

  • overlay : Заменяет все ранее заданные значения <RoomData> и <PackageData> для ресурса. Допустимы только <RoomData> и <PackageData> в текущем сообщении.
  • delta : добавляет ранее не определенные <RoomData> и <PackageData> или изменяет существующие.

Этот атрибут является необязательным. Если он не указан, по умолчанию используется значение delta.

Transaction / PropertyDataSet / Property 1 string Уникальный идентификатор ресурса. Это значение должно совпадать с идентификатором гостиницы, указанным с помощью <id> в элементе <listing> в фиде со списком отелей. Идентификатор гостиницы также указан в Hotel Center.
Transaction / PropertyDataSet / RoomData 0..n RoomData

Описывает комнату.

Примечание. Необходимо использовать не менее одного свойства <RoomData> или <PackageData>.

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>.

Если указан элемент <AllowablePackageIDs>, тип номера, заданный элементом <RoomID> в родительском элементе <RoomData>, можно комбинировать только с тарифными планами, определенными элементами <AllowablePackageID>.

Если элемент <AllowablePackageIDs> не указан, тип номера, заданный элементом <RoomID> в родительском элементе <RoomData>, можно комбинировать с любым тарифным планом.

Используйте либо <AllowablePackageIDs>, либо <AllowableRoomIDs>, но не оба.

Transaction / PropertyDataSet / RoomData / AllowablePackageIDs / AllowablePackageID 1..n AllowablePackageID Указывает идентификатор PackageID тарифного плана, который можно комбинировать с этим типом номера. Тарифный план определяется сочетанием пакета, тарифов и доступности. Значение PackageID соответствует значению RatePlanCode в сообщениях OTA_HotelRateAmountNotifRQ и OTA_HotelAvailNotifRQ.
Transaction / PropertyDataSet / RoomData / Capacity 0..1 integer Максимальное количество взрослых и детей, которое физически может вместить номер. Это значение должно быть больше или равно любому значению NumberOfGuests, которое вы отправляете вместе с тарифами.

Значение <Capacity> должно быть положительным целым числом от 1 до 99 включительно. Пример можно найти здесь.

Примечание. Если свойство <Capacity> не задано, количество допустимых пассажиров считается неограниченным. Если это поле не заполнено, а поля ExtraGuestCharges или AdditionalGuestAmounts заполнены, цены могут быть сгенерированы для любого количества гостей. Рекомендуем задать элемент <Capacity>, если определены элементы ExtraGuestCharges или AdditionalGuestAmounts. Это позволит избежать показа цен для недопустимых вариантов размещения.

Transaction / PropertyDataSet / RoomData / AdultCapacity 0..1 integer Максимальное количество взрослых, которое физически может вместить номер. Это значение должно быть больше или равно любому значению NumberOfGuests, которое вы отправляете вместе с тарифами.

Значение <AdultCapacity> должно быть положительным целым числом от 1 до 99 включительно. Пример можно найти здесь.

Transaction / PropertyDataSet / RoomData / ChildCapacity 0..1 integer Максимальное количество детей, которое физически может вместить номер.

Значение <ChildCapacity> должно быть положительным целым числом от 1 до 99 включительно. Пример можно найти по ссылке.

Transaction / PropertyDataSet / RoomData / OccupancySettings 0..1 OccupancySettings Настройки, которые могут ограничивать или изменять требования к размещению в номере.

Элемент <OccupancySettings> содержит следующие дочерние элементы:

  • <MinOccupancy> – минимальное количество гостей, которые могут проживать в номере. Например, если задано значение 2, то переговорную комнату нельзя забронировать для одного гостя.

    Значение <MinOccupancy> должно быть положительным целым числом от 1 до 99 включительно.

  • <MinAge> – минимальный возраст для всех гостей, проживающих в номере. Например, если указано значение 18, номер можно забронировать только для гостей, которым уже исполнилось 18 лет.

    Значение <MinAge> должно быть положительным целым числом от 0 до 99 включительно.

<OccupancySettings>
  <MinOccupancy>2</MinOccupancy>
  <MinAge>16</MinAge>
</OccupancySettings>

Не все дочерние элементы нужно включать.

Transaction / PropertyDataSet / RoomData / PhotoURL 0..n PhotoURL URL и необязательная подпись для фотографии номера или пакета услуг. Для номера или пакета номеров можно указать несколько значений <PhotoURL>.

Этот элемент содержит следующие дочерние элементы:

  • <URL> – место, где была сделана фотография. Местоположение должно быть общедоступным (не за брандмауэром) и включать протокол (http://).
  • <Caption> – подпись к фотографии. Этот элемент содержит один дочерний элемент <Text>, у которого есть два обязательных атрибута: Text и language. Атрибут Text – это субтитры, а атрибут language – двухбуквенный код языка, например en.
<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

Указывает стиль номера в японском отеле.

Допустимые значения:

  • western: номер в западном стиле с кроватями.
  • japanese – номер в японском стиле с футонами.
  • japanese_western – номер в японско-западном стиле с кроватями и футонами.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Beds 0..1 Object Содержит столько <Bed>, сколько есть в комнате. Обратите внимание, что японские футоны не учитываются.

Каждый объект <Bed> имеет следующие атрибуты:

  • size (необязательно). Допустимые значения: single, semi_double, double, queen и king.
Каждый элемент <Bed> содержит следующие дочерние элементы:
  • <Width> (необязательно) – ширина кровати. Должен содержать атрибут unit со значением cm и атрибут number с шириной кровати в сантиметрах (целое число).
  • <Length> (необязательно) – длина кровати. Должен содержать атрибут unit со значением cm и атрибут number с длиной спального места в сантиметрах (целое число).
Пример:
<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 Информация о ванной и туалете в номере.

Атрибут:

  • relation (необязательно) – указывает, как расположены ванна и туалет по отношению друг к другу. Допустимые значения: together (например, ванная комната, в которой ванна и туалет находятся в одном помещении) и separate (ванна и туалет находятся в разных помещениях). Этот атрибут не должен быть задан, если в номере нет и ванны, и туалета.

Элемент может содержать следующие дочерние элементы:

  • <Bath> (необязательный). Наличие этого элемента указывает, что в номере есть ванна.

    Вот эти атрибуты:

    • bathtub (необязательно) – указывает, что в ванной комнате есть ванна. Допустимые значения: 0 (или false) и 1 (или true).
    • shower (необязательно) – указывает, что в ванной комнате есть душ. Допустимые значения: 0 (или false) и 1 (или true).
  • <Toilet> (необязательный). Наличие этого элемента указывает на то, что в номере есть туалет.

    Вот эти атрибуты:

    • electronic_bidet (необязательно) – указывает, что в туалете есть электронное биде. Допустимые значения: 0 (или false) и 1 (или true).
    • mobility_accessible (необязательно) – указывает, что туалет доступен для людей с ограниченной подвижностью. Допустимые значения: 0 (или false) и 1 (или true).

Пример:

<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 Допустимые варианты:

<AirportView/>
<BayView/>
<BeachView>/>
<CastleView/>
<CityView/>
<CountrysideView/>
<CourtyardView/>
<DuneView/>
<ForestView/>
<GardenView/>
<GolfCourseView/>
<HarborView/>
<LagoonView/>
<LakeView/>
<MarinaView/>
<MountainView/>
<NatureView/>
<OceanView/>
<ParkView/>
<PartialOceanView/>
<PisteView/>
<PoolView/>
<PyramidView/>
<RiverView/>
<StreetView/>

Transaction / PropertyDataSet / PackageData 0..n PackageData

Контейнер для элементов, описывающих особенности и условия тарифа, которые не являются частью описания физического номера.

Примечание. Необходимо использовать не менее одного свойства <RoomData> или <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>.

Если задан элемент <AllowableRoomIDs>, то тарифный план, указанный в элементе <PackageID> родительского элемента <PackageData>, можно комбинировать только с типами номеров, заданными в элементах <AllowableRoomID>.

Если элемент <AllowableRoomIDs> не указан, то тарифный план, заданный в элементе <PackageID> родительского элемента <PackageData>, можно комбинировать с любым типом номера.

Используйте либо <AllowablePackageIDs>, либо <AllowableRoomIDs>, но не оба.

Transaction / PropertyDataSet / PackageData / AllowableRoomIDs / AllowableRoomID 1..n AllowableRoomID Указывает идентификатор типа номера, который можно комбинировать с этим тарифным планом. Тип номера определяется в элементе <RoomData>.
Transaction / PropertyDataSet / PackageData / MilesIncluded 0..1 MilesIncluded Добавьте информацию о бонусных баллах в пакеты в зависимости от того, как определены тарифные планы или пакеты. Укажите элемент <MilesIncluded> в элементе <PackageData>, который определяет тарифный план. <MilesIncluded> содержит следующий дочерний элемент:
  • LoyaltyCampaignID – уникальный идентификатор, который позволяет определить конкретную кампанию в рамках программы лояльности, настроенную и обновленную в Google. Добавляет бонусные баллы к цене гостиницы.

    Чтобы включить элемент <MilesIncluded>, идентификатор кампании должен быть указан в настройках кампании лояльности. То, как Google использует бонусные баллы в результатах, определяется настройками кампании лояльности.

    <MilesIncluded>
      <LoyaltyCampaignID>my_campaign</LoyaltyCampaignID>
    </MilesIncluded>

    Примечание. В редких случаях вы можете включить элемент <NumberOfMiles> в элемент <MilesIncluded>, чтобы указать, что по программе всегда начисляется фиксированное количество баллов, независимо от маршрута. Подробнее о <MilesIncluded> в <PackageData>…

Transaction / PropertyDataSet / PackageData / Refundable 0..1 Refundable Позволяет указать, что тариф полностью возмещаемый или отменяемый. Если это свойство не указано, информация о возврате не показывается.

Примечание. Рекомендуем задать все атрибуты. Если не задан один или несколько атрибутов, генерируется предупреждение о статусе фида.

Если вы не укажете атрибуты, тариф не будет показываться как возвратный.

При настройке атрибутов обратите внимание на следующее:

  • Если не задать available или refundable_until_days, тариф не будет показываться как возвратный.
  • Если для атрибута available задано значение 0 или false, другие атрибуты игнорируются. Тариф не будет показываться как возвратный, даже если задан один или оба других атрибута.
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).

Рекомендуем использовать <Meals> вместо <BreakfastIncluded>.

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 Содержит информацию о питании, включенном в пакет.

Элемент <Meals> принимает два необязательных дочерних элемента, <Breakfast> и <Dinner>, которые имеют следующие атрибуты:

  • included (обязательный). Укажите значение 1 (или true), если завтрак или ужин включен в стоимость. В противном случае укажите 0 или false.
  • in_room (необязательно). Укажите значение 1 (или true), если гости могут заказать завтрак или ужин в номер. В противном случае укажите значение 0 (или false).
  • in_private_space (необязательно). Укажите значение 1 (или true), если гости могут завтракать или ужинать в помещении (кроме своего номера), где они не будут контактировать с другими гостями. В противном случае укажите значение 0 (или false).
  • buffet (необязательный). Укажите значение 1 (или true), если завтрак или ужин подается в формате шведского стола. В противном случае укажите значение 0 (или false).

Необязательные атрибуты используются, только если для атрибута included задано значение true.

Чтобы фильтры по приемам пищи (no meals, breakfast only, dinner only и breakfast and dinner) работали, в атрибуте included нужно указать и <Breakfast>, и <Dinner>.

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 ранее, то после получения показанного сообщения типы номеров 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) могут разместиться до четырех гостей. Кроме того, в нем может быть до четырех взрослых и до трех детей. Чтобы комнату можно было забронировать, должны быть выполнены все три требования к вместимости. Такая конфигурация характерна для стандартного номера с двумя кроватями, каждая из которых рассчитана на двух человек. Вместимость для детей на единицу меньше общей вместимости, поскольку в номере должен находиться хотя бы один взрослый.

Дополнительные примеры с <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 Корневой элемент, указывающий на успешное выполнение или проблемы с полученным сообщением Transaction request.
TransactionResponse / @timestamp 1 DateTime Дата и время создания этого сообщения.
TransactionResponse / @id 1 string Уникальный идентификатор из связанного сообщения-транзакции.
TransactionResponse / @partner 1 string Аккаунт партнера для этого сообщения.
TransactionResponse / Success 0..1 Success Указывает, что сообщение-транзакция было обработано без предупреждений, ошибок и сбоев.

В каждом сообщении присутствует <Success> или <Issues>.

TransactionResponse / Issues 0..1 Issues Контейнер для одной или нескольких проблем, возникших при обработке сообщения-транзакции.

В каждом сообщении присутствует <Success> или <Issues>.

TransactionResponse / Issues / Issue 1..n Issue Описание предупреждения, ошибки или сбоя, возникших при обработке сообщения-транзакции. Подробную информацию об этих проблемах можно найти в статье Сообщения об ошибках в статусе фида.
TransactionResponse / Issues / Issue / @code 1 integer Идентификатор проблемы.
TransactionResponse / Issues / Issue / @status 1 enum

Тип проблемы.

Допустимые значения: warning, error и failure.

Примеры

Выполнено

Ниже приведен ответ на успешно обработанное сообщение-транзакцию.

<?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>