Transacción (datos de propiedad)

Solicitudes

Sintaxis

El mensaje Transaction (Property Data) usa la siguiente sintaxis:

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

Elementos y atributos

El mensaje de transacción (datos de propiedad) tiene los siguientes elementos y atributos:

Elemento / @Attribute Occurrences Tipo Descripción
Transaction 1 Complex element En una implementación de ARI, este es el elemento raíz de un mensaje que define los tipos de habitaciones y paquetes de una sola propiedad.
Transaction / @timestamp 1 DateTime La fecha y hora de creación de este mensaje.
Transaction / @id 1 string Es un identificador único para este mensaje de solicitud. Este valor se muestra en el mensaje de respuesta. Los caracteres permitidos son a-z, A-Z, 0-9, _ (guion bajo) y - (guion).
Transaction / @partner 1 string Es la cuenta del socio de este mensaje. Este valor de string es el valor de “Clave de socio” que aparece en la página Configuración de la cuenta de Hotel Center.

Nota: Si tienes un backend que proporciona feeds para varias cuentas, este valor debe coincidir con el valor del atributo ID especificado en el elemento <RequestorID> de los mensajes <OTA_HotelRateAmountNotifRQ> y <OTA_HotelAvailNotifRQ> de la misma cuenta.

Transaction / PropertyDataSet 1.. PropertyDataSet Es un contenedor para definir los tipos de habitaciones y paquetes de una sola propiedad.
Transaction / PropertyDataSet / @action 0..1 enum

Es el tipo de actualización que se aplica a las definiciones de tarifa de habitación.

Estos son los valores válidos:

  • overlay : Reemplaza todos los elementos <RoomData> y <PackageData> definidos previamente para la propiedad. Solo los valores <RoomData> y <PackageData> del mensaje actual son válidos.
  • delta : Agrega <RoomData> y <PackageData> que antes no estaban definidos o modifica los existentes.

Este atributo es opcional y, si no se especifica, se establece de forma predeterminada como delta.

Transaction / PropertyDataSet / Property 1 string Es el identificador único de la propiedad. Este valor debe coincidir con el ID de hotel especificado con <id> en el elemento <listing> del feed de lista de hoteles. El ID del hotel también aparece en Hotel Center.
Transaction / PropertyDataSet / RoomData 0..n RoomData

Describe una habitación.

Nota: Se requiere al menos uno de los siguientes valores: <RoomData> o <PackageData>.

Transaction / PropertyDataSet / RoomData / RoomID 1 RoomID Es un identificador único para un tipo de habitación. Se hace referencia a este valor mediante el atributo InvTypeCode en el elemento <StatusApplicationControl> en los mensajes <OTA_HotelAvailNotifRQ> y <OTA_HotelRateAmountNotifRQ>.
Transaction / PropertyDataSet / RoomData / Name 1 Name Contenedor para el nombre de la categoría de la habitación en uno o más idiomas.
Transaction / PropertyDataSet / RoomData / Name / Text 1..n Text Especifica el nombre de la categoría de la habitación en un idioma.
Transaction / PropertyDataSet / RoomData / Name / Text / @text 1..n string Es el nombre de la categoría de habitación en el idioma especificado por el atributo language.
Transaction / PropertyDataSet / RoomData / Description 1 Name Contenedor para la descripción de la categoría de la habitación en uno o más idiomas.
Transaction / PropertyDataSet / RoomData / Description / Text 1..n Text Especifica la descripción de la categoría de habitación en un idioma.
Transaction / PropertyDataSet / RoomData / Description / Text / @text 1..n string Descripción de la categoría de habitación en el idioma especificado por el atributo language.
Transaction / PropertyDataSet / RoomData / Description / Text / @language 1..n string Un código de idioma de dos letras.
Transaction / PropertyDataSet / RoomData / AllowablePackageIDs 0..1 AllowablePackageIDs Es un contenedor para elementos <AllowablePackageID>.

Si se especifica un valor de <AllowablePackageIDs>, el tipo de habitación que identifica el <RoomID> en el elemento <RoomData> principal solo se puede combinar con los planes de tarifas definidos por los elementos <AllowablePackageID>.

Si no se especifica un valor de <AllowablePackageIDs>, el tipo de habitación que identifica el <RoomID> en el elemento <RoomData> principal se puede combinar con cualquier plan de tarifas.

Usa <AllowablePackageIDs> o <AllowableRoomIDs>, pero no ambos.

Transaction / PropertyDataSet / RoomData / AllowablePackageIDs / AllowablePackageID 1..n AllowablePackageID Especifica el PackageID de un plan de tarifas que se puede combinar con este tipo de habitación. Un plan de tarifas se define mediante una combinación de paquetes, tarifas y disponibilidad. El PackageID corresponde al RatePlanCode en los mensajes OTA_HotelRateAmountNotifRQ y OTA_HotelAvailNotifRQ.
Transaction / PropertyDataSet / RoomData / Capacity 0..1 integer Cantidad máxima de adultos y niños que puede alcanzar físicamente en una habitación. Debe ser mayor o igual que cualquier valor de NumberOfGuests que envíes con las tarifas.

El valor de <Capacity> debe ser un número entero positivo entre 1 y 99, inclusive. Consulta este vínculo para ver un ejemplo.

Nota: Si no estableces <Capacity>, la cantidad de ocupantes permitidos se considera ilimitada. Si no se configura este campo y se definen ExtraGuestCharges o AdditionalGuestAmounts, se pueden generar precios para cualquier cantidad de ocupantes. Te recomendamos que configures <Capacity> si se definen ExtraGuestCharges o AdditionalGuestAmounts para asegurarte de que no se muestren los precios de las opciones de ocupación que no son válidas.

Transaction / PropertyDataSet / RoomData / AdultCapacity 0..1 integer Cantidad máxima de adultos que pueden alcanzar físicamente las habitaciones. Debe ser mayor o igual que cualquier valor de NumberOfGuests que envíes con las tarifas.

El valor de <AdultCapacity> debe ser un número entero positivo entre 1 y 99, inclusive. Consulta este vínculo para ver un ejemplo.

Transaction / PropertyDataSet / RoomData / ChildCapacity 0..1 integer Cantidad máxima de niños que puede alcanzar físicamente una habitación.

El valor de <ChildCapacity> debe ser un número entero positivo entre 1 y 99, ambos inclusive. Consulta este vínculo para ver un ejemplo.

Transaction / PropertyDataSet / RoomData / OccupancySettings 0..1 OccupancySettings Son parámetros de configuración que pueden restringir o modificar los requisitos de ocupación de una habitación.

El elemento <OccupancySettings> toma los siguientes elementos secundarios:

  • <MinOccupancy>: La cantidad mínima de huéspedes que pueden alojarse en una habitación. Por ejemplo, si la estableces como 2, esta sala no se podrá reservar para un solo huésped.

    El valor de <MinOccupancy> debe ser un número entero positivo entre 1 y 99, ambos inclusive.

  • <MinAge>: La edad mínima de todos los huéspedes que se alojen en una habitación. Por ejemplo, si el valor es 18, solo se podrá reservar esta sala para grupos en los que todos los invitados sean mayores de 18 años.

    El valor de <MinAge> debe ser un número entero positivo entre 0 y 99, ambos inclusive.

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

No es necesario incluir todos los elementos secundarios.

Transaction / PropertyDataSet / RoomData / PhotoURL 0..n PhotoURL Una URL y una leyenda opcional para una foto de la habitación o el paquete de habitación determinados. Puedes especificar más de un <PhotoURL> para una habitación o un paquete de habitación.

Este elemento toma los siguientes elementos secundarios:

  • <URL>: Especifica la ubicación de la foto. La ubicación debe ser pública (no detrás de un firewall) y debe incluir el protocolo (http://).
  • <Caption>: Define la leyenda de la foto. Este elemento toma un solo elemento secundario, <Text>, que tiene dos atributos obligatorios: Text y language. El atributo Text es la leyenda y el atributo language especifica un código de idioma de dos letras, como 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> Contiene información sobre las características de la habitación.
Transaction / PropertyDataSet / RoomData / RoomFeatures / JapaneseHotelRoomStyle 0..1 enum

Indica el estilo de una habitación de hotel japonesa.

Estos son los valores válidos:

  • western: Una habitación de estilo occidental con camas.
  • japanese: Una habitación de estilo japonés con cama tipo futón.
  • japanese_western: Una habitación de estilo japonés occidental con camas de estilo occidental y futones de estilo japonés.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Beds 0..1 Object Contiene tantos <Bed> como los de la sala. Ten en cuenta que los futones japoneses no deben contabilizarse aquí.

Cada <Bed> tiene los siguientes atributos:

  • size (opcional): Los valores válidos son single, semi_double, double, queen y king.
Cada <Bed> tiene los siguientes elementos secundarios:
  • <Width> (opcional): Especifica el ancho de la cama. Debe tener el atributo unit con el valor cm y el atributo number con el ancho de la cama en centímetros enteros.
  • <Length> (opcional): Especifica la longitud de la cama. Debe tener el atributo unit con el valor cm y el atributo number con la longitud de la cama en centímetros enteros.
Ejemplo:
<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 Proporciona este elemento cuando la habitación sea una suite.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Capsule 0..1 enum Proporciona este elemento cuando esta sala sea una sala de cápsulas.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Roomsharing 0..1 enum Indica si esta habitación se comparte con otros ocupantes, como otros huéspedes o propietarios. Los valores válidos son shared y private.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Outdoor 0..1 enum Proporciona este elemento cuando esta habitación sea un alojamiento al aire libre que no tenga paredes fijas, plomería ni climatización. Por ejemplo, las habitaciones de hotel no son alojamiento al aire libre, mientras que los campamentos, en los que los huéspedes se alojan en carpas, y los parques para autocaravanas, donde los huéspedes traen su propia casa rodante son alojamientos al aire libre.
Transaction / PropertyDataSet / RoomData / RoomFeatures / MobileAccessible 0..1 enum Proporciona este elemento cuando esta habitación sea accesible para personas con movilidad reducida.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Smoking 0..1 enum Ya sea una habitación para no fumadores o una para fumadores. Los valores válidos son non_smoking y smoking.
Transaction / PropertyDataSet / RoomData / RoomFeatures / BathAndToilet 0..1 Object Contiene información sobre un baño y un inodoro en la habitación.

El atributo es:

  • relation (opcional): Indica cómo se colocan el baño y el inodoro entre sí. Los valores válidos son together, por ejemplo, para un baño en el que el baño y el inodoro están ubicados juntos en la misma habitación, y separate, donde el baño y el inodoro tienen espacios exclusivos. Este atributo no se debe establecer cuando la habitación no tiene baño y también baño.

De manera opcional, el elemento toma los siguientes elementos secundarios:

  • <Bath> (opcional): La existencia de este elemento indica que la habitación tiene un baño.

    Los atributos son los siguientes:

    • bathtub (opcional): Indica que el baño tiene una bañera. Los valores válidos son 0 (o false) y 1 (o true).
    • shower (opcional): Indica que el baño tiene una ducha. Los valores válidos son 0 (o false) y 1 (o true).
  • <Toilet> (opcional): La existencia de este elemento indica que esta habitación tiene un baño.

    Los atributos son los siguientes:

    • electronic_bidet (opcional): Indica que el inodoro tiene un bidé electrónico. Los valores válidos son 0 (o false) y 1 (o true).
    • mobility_accessible (opcional): Indica que el baño es accesible para personas con movilidad reducida. Los valores válidos son 0 (o false) y 1 (o true).

Ejemplo:

<BathAndToilet relation="separate">
  <Bath bathtub="1" shower="1"/>
  <Toilet
    electronic_bidet="1"
    mobility_accessible="1"/>
</BathAndToilet>
Transaction / PropertyDataSet / RoomData / RoomFeatures / OpenAirBath 0..1 enum Proporciona este elemento cuando esta habitación tenga un baño privado al aire libre.
Transaction / PropertyDataSet / RoomData / RoomFeatures / AirConditioning 0..1 enum Proporciona este elemento cuando la habitación tenga aire acondicionado.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Balcony 0..1 enum Proporciona este elemento cuando la sala tenga balcón o terraza.
Transaction / PropertyDataSet / RoomData / RoomFeatures / Views 0..1 Object Entre las opciones válidas, se incluyen las siguientes:

<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

Contenedor de elementos que describen características de tarifas y términos que no forman parte de la descripción de la habitación física.

Nota: Se requiere al menos uno de los siguientes valores: <RoomData> o <PackageData>.

Transaction / PropertyDataSet / PackageData / PackageID 1 string PackageID en estos mensajes corresponde a la RatePlanCode en los mensajes OTA_HotelRateAmountNotifRQ y OTA_HotelAvailNotifRQ.
Transaction / PropertyDataSet / PackageData / Name 1 Name Es el contenedor para el nombre del paquete en uno o más idiomas.
Transaction / PropertyDataSet / PackageData / Name / Text 1..n Text Especifica el nombre del paquete en un idioma.
Transaction / PropertyDataSet / PackageData / Name / Text / @text 1..n string Es el nombre del paquete en el idioma especificado por el atributo language.
Transaction / PropertyDataSet / PackageData / Description 1 Description Contenedor para la descripción del paquete en uno o más idiomas.
Transaction / PropertyDataSet / PackageData / Description / Text 1..n Text Especifica la descripción del paquete en un idioma.
Transaction / PropertyDataSet / PackageData / Description / Text / @text 1..n string Es la descripción del paquete en el idioma especificado por el atributo language.
Transaction / PropertyDataSet / PackageData / Description / Text / @language 1..n string Un código de idioma de dos letras.
Transaction / PropertyDataSet / PackageData / AllowableRoomIDs 0..1 AllowableRoomIDs Es un contenedor para elementos <AllowableRoomID>.

Si se especifica un valor de <AllowableRoomIDs>, el plan de tarifas que identifica el <PackageID> en el elemento <PackageData> principal solo se puede combinar con los tipos de habitaciones definidos por los elementos <AllowableRoomID>.

Si no se especifica un valor de <AllowableRoomIDs>, el plan de tarifas que identifica el <PackageID> en el elemento <PackageData> superior se puede combinar con cualquier tipo de habitación.

Usa <AllowablePackageIDs> o <AllowableRoomIDs>, pero no ambos.

Transaction / PropertyDataSet / PackageData / AllowableRoomIDs / AllowableRoomID 1..n AllowableRoomID Especifica el RoomID de un tipo de habitación que se puede combinar con este plan de tarifas. Un tipo de habitación se define en un elemento <RoomData>.
Transaction / PropertyDataSet / PackageData / Refundable 0..1 Refundable Habilita mostrar una tarifa como reembolsable o cancelable en su totalidad. Si no se proporciona, no se mostrará información sobre el reembolso.

Nota: Te recomendamos configurar todos los atributos. Se genera un mensaje de advertencia del estado del feed cuando uno o más atributos no se configuran.

Si no estableces ningún atributo, la tarifa no se muestra como reembolsable.

Cuando configures los atributos, ten en cuenta lo siguiente:

  • Si no estableces available o refundable_until_days, la tarifa no se muestra como reembolsable.
  • Si available es 0 o false, los otros atributos se ignoran. La tarifa no se muestra como reembolsable, incluso si se configuran uno o ambos atributos.
Transaction / PropertyDataSet / PackageData / Refundable / @available 1 boolean (Obligatorio) Configúralo en 1 o true para indicar si la tarifa permite un reembolso total; de lo contrario, establécelo en 0 o false.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_days 0..1 integer Especifica la cantidad de días antes de la entrada en los que se puede solicitar un reembolso total (obligatorio si available es true). El valor de refundable_until_days debe ser un número entero entre 0 y 330, ambos inclusive.
Transaction / PropertyDataSet / PackageData / Refundable / @refundable_until_time 0.. Time (Se recomienda especialmente si available es el true). Especifica la hora más reciente del día en la que se respetará una solicitud de reembolso total, en la hora local del hotel. Se puede combinar con refundable_until_days para especificar, por ejemplo, que "los reembolsos están disponibles hasta las 4:00 p.m., dos días antes de la entrada". Si no se configura refundable_until_time, el valor predeterminado es la medianoche.
Transaction / PropertyDataSet / PackageData / BreakfastIncluded 0..1 boolean Especifica si este tipo de habitación incluye desayuno. Los valores válidos son 0 (o false) y 1 (o true).

Es preferible que uses <Meals> en lugar de <BreakfastIncluded>.

Transaction / PropertyDataSet / PackageData / CheckinTime 0..1 Time Es la hora de entrada más temprana posible en la hora local del hotel. La hora debe ser inferior a 24:00.
Transaction / PropertyDataSet / PackageData / CheckoutTime 0..1 Time Es la hora de salida más reciente posible en la hora local del hotel.
Transaction / PropertyDataSet / PackageData / InternetIncluded 0..1 boolean Especifica si la habitación incluye acceso a Internet sin costo adicional, mientras que otras no incluyen este tipo de comodidades. No coloques este elemento en un hotel que proporcione Internet sin costo adicional en todas las habitaciones. Este elemento no se aplica a los servicios de Internet con cable o inalámbrico en la habitación que no están disponibles en las habitaciones de huéspedes. Los valores válidos son 0 (o false) y 1 (o true).
Transaction / PropertyDataSet / PackageData / Meals 0..1 Object Contiene información sobre las comidas en este paquete.

El elemento <Meals> toma dos elementos secundarios opcionales, <Breakfast> y <Dinner>, que tienen los siguientes atributos:

  • included (obligatorio): Establece el valor en 1 (o true) si la tarifa incluye desayuno y cena; de lo contrario, establece un valor de 0 o false.
  • in_room (opcional): Configúralo en 1 (o true) si los huéspedes tienen la opción de desayunar o cenar en la habitación en la que se alojan; de lo contrario, se establece en 0 (o false).
  • in_private_space (opcional): Se establece en 1 (o true) si los huéspedes tienen la opción de desayunar o cenar en un espacio (excepto en la habitación en la que se alojan) donde pueden evitar el contacto con otros huéspedes; de lo contrario, se establece en 0 (o false).
  • buffet (opcional): Establece el valor en 1 (o true) si el desayuno o la cena se sirven como buffet; de lo contrario, se establece en 0 (o false).

Los atributos opcionales se usan solo cuando included es verdadero.

Para que los filtros de comida (no meals, breakfast only, dinner only y breakfast and dinner) funcionen, <Breakfast> y <Dinner> deben proporcionarse con el atributo included.

Transaction / PropertyDataSet / PackageData / ParkingIncluded 0..1 boolean Si una habitación incluye estacionamiento sin cargo, en este hotel el estacionamiento sería un servicio pagado. No especifiques un valor para este elemento en el caso de un hotel que ofrece estacionamiento gratuito. Los valores válidos son 0 (o false) y 1 (o true). El valor predeterminado es false.
Transaction / PropertyDataSet / PackageData / PhotoURL 0..1 Object (Igual que <PhotoURL> en <RoomData>, pero para el paquete (p.ej., fotos de comidas).

Ejemplos

Datos de habitaciones y paquetes

El siguiente es un ejemplo básico de cómo definir los datos de la habitación y el paquete de una propiedad en un mensaje de transacción (datos de propiedad). El atributo overlay se usa para garantizar que, si ya existe algún dato de forma inesperada, se borren todos los datos existentes y se reemplacen por los datos de este mensaje:

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

Agregar un tipo de habitación

A continuación, se muestra un ejemplo de cómo agregar un tipo de habitación y un paquete a los datos de <Transaction> existentes:

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

Quitar tipos de habitación

El siguiente es un ejemplo de cómo quitar los tipos de habitaciones y paquetes existentes. En este caso, si los mensajes de "Datos de Room y paquete" y "Agrega un tipo de habitación" se enviaron a Google anteriormente, los tipos de habitación King y Double ya no existirían una vez que Google reciba el mensaje que se muestra a continuación. Ten en cuenta que quitar datos de paquetes afecta el plan de tarifas general según se define en los mensajes de transacción (datos de propiedad), OTA_HotelRateAmountNotifRQ y OTA_HotelAvailNotifRQ (cuando se hace referencia al mismo valor PackageID). Por lo tanto, es posible que se requieran las actualizaciones correspondientes que usan los otros tipos de mensajes para reflejar que PackageID_2 y PackageID_3 ya no se definen aquí.

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


Restringe planes de tarifas

El siguiente es un ejemplo de cómo usar el elemento <AllowablePackageIDs> para restringir los planes de tarifas permitidos para un tipo de habitación. En este ejemplo, el tipo de habitación Queen (RoomID_2) solo se puede combinar con el paquete y el plan de tarifas identificados como 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>

Restringir la capacidad de la sala

El siguiente es un ejemplo de cómo usar los elementos <Capacity>, <AdultCapacity> y <ChildCapacity> para establecer restricciones en las capacidades de una sala.

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

Las habitaciones dobles (RoomID_1) pueden alojar hasta 4 huéspedes en total. Además, puede tener hasta 4 adultos y hasta 3 niños. Se deben cumplir los tres requisitos de capacidad para que se pueda reservar esta sala. Esta configuración es representativa de una habitación típica con dos camas con capacidad para dos personas. La capacidad secundaria es una menos que la capacidad total porque la sala debe tener al menos un adulto presente.

Ejemplos ampliados con <RoomFeatures> y comidas

JapaneseHotelRoomStyle no tiene un valor predeterminado. Si omites un valor, no se generará un error de XML, pero tu ficha no se mostrará en los resultados de la búsqueda cuando el usuario filtre por estilo de habitación o camas.

Dos camas individuales

En el siguiente ejemplo, se muestra cómo usar <RoomFeatures>:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <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>

Dos camas dobles

El siguiente es un ejemplo de una habitación de estilo western con dos camas double.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>western</JapaneseHotelRoomStyle>
        <Beds> <!-- Two double beds-->
          <Bed size="double"></Bed>
          <Bed size="double"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Estilo japonés sin cama

El siguiente es un ejemplo de una habitación de estilo japonés sin cama. No se requiere la información sobre la cama para la habitación de estilo japanese.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Western japonés con cama

El siguiente es un ejemplo de una habitación de estilo japanese_western con una cama de tamaño king.

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
        <Beds>
          <Bed size="king"></Bed>
        </Beds>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>

Si el socio no tiene la información sobre la cantidad de camas en las habitaciones japanese_western, sigue el siguiente ejemplo:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2023-07-23T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <RoomData>
      <RoomFeatures>
        <JapaneseHotelRoomStyle>japanese_western</JapaneseHotelRoomStyle>
      </RoomFeatures>
    </RoomData>
  </PropertyDataSet>
</Transaction>


Comidas

En el siguiente ejemplo, se definen los metadatos de habitaciones y paquetes relacionados con las comidas, las fotos y las horas de entrada y salida:

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <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>

Solo desayuno

<?xml version="1.0" encoding="UTF-8"?>
<Transaction timestamp="2017-07-18T16:20:00-04:00" id="42">
  <PropertyDataSet>
    <Property>1234</Property>
    <PackageData>
      <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>

Respuestas

Sintaxis

El mensaje TransactionResponse (Property Data) usa la siguiente sintaxis:

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

Elementos y atributos

El mensaje TransactionResponse (Property Data) tiene los siguientes elementos y atributos:

Elemento / @Attribute Occurrences Tipo Descripción
TransactionResponse 1 Complex element El elemento raíz que indica el éxito o los problemas de un mensaje de solicitud de transacción recibido.
TransactionResponse / @timestamp 1 DateTime La fecha y hora de creación de este mensaje.
TransactionResponse / @id 1 string Es el identificador único del mensaje de transacción asociado.
TransactionResponse / @partner 1 string Es la cuenta del socio de este mensaje.
TransactionResponse / Success 0..1 Success Indica que el mensaje de transacción se procesó correctamente sin advertencias, errores ni fallas.

<Success> o <Issues> están presentes en cada mensaje.

TransactionResponse / Issues 0..1 Issues Es un contenedor para uno o más problemas que se encontraron durante el procesamiento del mensaje de transacción.

<Success> o <Issues> están presentes en cada mensaje.

TransactionResponse / Issues / Issue 1..n Issue Es la descripción de una advertencia, un error o una falla que se encontró durante el procesamiento del mensaje de transacción. Puedes encontrar detalles sobre estos problemas en Mensajes de error sobre el estado del feed.
TransactionResponse / Issues / Issue / @code 1 integer Es el identificador del problema.
TransactionResponse / Issues / Issue / @status 1 enum

El tipo de problema encontrado.

Los valores válidos son warning, error, y failure.

Ejemplos

Completado correctamente

La siguiente es una respuesta a un mensaje de transacción procesado correctamente.

<?xml version="1.0" encoding="UTF-8"?>
<TransactionResponse timestamp="2020-05-18T16:20:00-04:00"
                     id="12345678"
                     partner="partner_key">
  <Success/>
</TransactionResponse>

Issues

La siguiente es una respuesta a un mensaje de transacción que no se procesó debido a errores.

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